728x90
반응형

https://youtu.be/oKH0UNopePo?si=rX4xSgFkFeY8VBvM

1. 주기억장치 관리

1-1. 주기억장치 전략
- 반입 전략은 요구 반입과 예상 반입으로 나뉨
- 배치 전략은 공간 적합성과 여유 공간으로 나뉨
- (중요) 주기억장치 영역에 대한 교체 전략은 6가지임
- 주기억장치 할당 기법은 연속 할당과 분산 할당으로 나뉨
- 단일 분할 할당 기법은 작은 프로그램에 적합함

1-2. 주기억장치 할당 기법
- 오버헤드는 큰 프로그램을 실행하기 위한 기법임
- 스와핑은 프로그램 자체를 교체하는 방식임
- 다중 분할 할당 기법은 여러 개의 공간으로 나누어 단편화를 유도함
- 내부 단편화는 프로그램 실행 시 발생하며, 외부 단편화는 프로그램 실행 전에 발생함
- (중요) 통합과 압축을 통해 공간을 합치거나 분리함

1-3. 가상 기억장치
- 가상 기억장치는 용량 큰 프로그램 실행을 위해 보조기억장치를 대체함
- 주기억장치를 사용하면 속도 향상을 위해 필요함
- 가상 기억장치는 보조기억장치의 속도가 더 좋아야 함
- 페이징 기법은 외부 단편화 없이 내부 단편화로 인한 공간 낭비를 해결함
- 세그멘테이션 기법은 논리적인 세그먼트를 나누어 공간을 효율적으로 사용함

2. 페이지 교체 알고리즘

2-1. 페이지 부재와 교체 알고리즘 개요
- 페이지 프레임이 비어있을 때 차례대로 적재함
- 공간이 남아있으면, 남은 공간에 적재하고, 그렇지 않으면 새로 공간을 할당함
- (중요) '페이지 부재'는 페이지가 없어짐을 의미함
- 페이지 교체 알고리즘은 옵티몰, fifo, 루트, 다이너로 구성됨
- 옵티몰은 가장 오래되지 않은 페이지를 교체하는 알고리즘임

2-2. 옵티몰과 요령인
- 옵티몰은 페이지 참조 횟수와 부재 횟수를 고려하여 효율적으로 페이지 교체를 진행함
- 페이지 부재 발생 시, 가장 먼저 적재된 페이지를 교체하고, 그 순서를 유지함
- (중요) 페이지 참조 횟수와 부재 횟수를 통해 페이지 교체의 효율성을 높임
- (중요) 다이너는 남은 공간을 자주 사용하지 않는 페이지에 대해 교체하는 알고리즘임
- 다이너는 0부터 시작하여 남은 공간을 이용하지 않는 페이지를 교체할 때, 해당 공간을 0으로 만듦

2-3. 루트, 다이너, LRA
- 루트는 가장 오래된 페이지를 교체하는 알고리즘으로, 사용된 횟수에 따라 적용됨
- 다이너는 아직 사용되지 않은 페이지를 교체할 때, 가장 오래된 사용 여부를 확인하여 교체함
- LRA는 가장 최근에 사용하지 않은 페이지를 교체할 때, 사용 빈도가 적은 페이지를 선택함
- LRA는 참조 비트와 변형 비트를 통해 최근 사용 여부를 확인하여 교체의 효율성을 높임
- 페이지 교체 알고리즘은 각각의 특징에 따라 효율적인 적용이 필요함

3. 페이지 교체 전략

3-1. 페이지 교체 이해
- 페이지 교체는 시스템 장애나 데이터 변형 시 해당 페이지로 이동하여 다른 페이지로 전환하는 작업임
- (중요) 변형된 페이지와 참조된 페이지 모두에 대한 정보를 포함하며, 변형만 된 페이지가 가장 우선순위로 교체됨
- 교체된 페이지는 변형되었는지 아닌지에 대한 정보를 남김
- 오프라인 장치에서 오래된 프로그램이 실행될수록 교체 확률이 높아짐
- 프로그램이 자주 사용되는 경우, 교체를 하지 않고 페이지를 사용하는 것을 선택할 수 있음

3-2. 페이지 관리 방식
- 페이지 크기가 작을 경우, 데이터가 많이 쪼개져 맵 테이블 크기가 상승하고 맵핑 속도와 입출력 속도가 저하됨
- 페이지 크기가 클 경우, 맵핑을 해야 하는 페이지 개수가 줄어들어 맵 테이블 크기가 감소하고 맵핑 속도와 입출력 속도가 상승함
- 워킹 셋은 특정 단위 시간 동안 자주 참조하는 페이지들의 집합으로, 이를 통해 페이지 교체 및 부재 문제를 줄일 수 있음
- 페이지 부재 빈도에 따라 프레임의 수를 조절하여, 초기 과도한 페이지 부재를 방지함
- 프리페이징은 예상되는 모든 페이지를 미리 준비하여 과도한 페이지 부재를 방지하는 기법임

3-3. 파일 설계와 편성
- 순차 편성은 논리적인 순서에 따라 물리적으로 연속된 위치에 기록하는 방법임
- (중요) 순차 편성은 일괄 처리의 효율이 높지만, 탐색의 속도가 느려지는 단점이 있음
- 임의 편성은 해시 함수를 적용하여 데이터의 위치에 따른 처리 속도가 일정하다는 특징이 있음
- 색인 순차 편성은 논리적 순서에 따라 데이터를 기록하고, 색인 인덱스를 구성하여 랜덤 처리와 순차 처리를 병행함
- 색인 구역, 기본 데이터 구역, 오버플로우 구역으로 색인 순차 편성의 구역을 구성함

4. 디스크의 구조와 스케줄링 방식 이해

4-1. 디스크의 구조와 종류 이해
- 디스크는 트랙, 섹터, 실린더, 헤드 등의 요소로 구성됨
- 트랙은 디스크를 미니 세상에 동심원 모양으로 배치한 부분으로 데이터 기록과 읽기가 이루어짐
- 섹터는 트랙을 피자처럼 나누는 단위로, 하나씩 독립적으로 읽기와 쓰기가 가능함
- 실린더는 디스크의 특정 위치에 세력에 대한 논리적인 집합으로 데이터를 저장함
- 헤드는 바늘처럼 데이터를 읽어와 쓰는 역할을 하며, 디스크의 각 부분에 고정되어 있음

4-2. 디스크의 스케줄링 방식
- 디스크의 스케줄링은 액세스 암이 고정되어 있어 데이터 이동이 필요 없음
- (중요) 따라서, 데이터를 저장하고 불필요하게 이동하는 일이 없어 효율성이 높아짐
- 액세스 암 간의 고정적인 연결 때문에 같은 실린더 내 데이터는 읽기가 빠름
- 이로 인해 디스크는 중요한 정보의 처리에 효율적임

4-3. 디스크 스케줄링 방법과 효율성
- 디스크 스케줄링 방법은 퍼스트에 입출력 요청이 들어온 순서대로 처리하며, 입출력 순서에 따라 처리 속도가 결정됨
- 이 방식은 물리적으로 트랙을 하나씩 움직이기 때문에 효율성이 떨어짐
- (중요) 이는 디스크 헤드의 이동 방향이 바뀌기 때문에 발생하며, 따라서 비효율적임
- 따라서, 각 디스크 스케줄링 방식마다 장단점이 존재하며, 이에 따라 적절한 선택이 필요함

5. 트랙 스캔

5-1. 스캔의 종류
- 스캔은 액세스 암의 움직임에 따라 트랙을 기준으로 수행함
- 액세스 암의 움직임이 클수록 비효율적임
- (중요) 가장 가까운 트랙의 요청을 먼저 처리하여 싱크타임을 최소화함
- 응답 시간에 편차가 발생하고, 안쪽과 바깥쪽 트랙의 요청에 무한대기 현상이 발생할 수 있음

5-2. 스캔의 특징
- 현재 트랙 헤드가 진행 중인 방향의 요청을 모두 처리한 후, 반대 방향으로 돌아가 마지막까지 진행한 후 반환함
- 이 과정을 엘리베이터 기법이라 부름
- 위치가 바뀔 수 있고, 원래 위치가 바뀔 수도 있음
- 액세스 암이 계속 움직여야 하므로 비효율적임
- (중요) 균등한 시간 배분이 가능함

5-3. 스캔의 종류
- 서큘러 스캔은 바깥쪽 트랙에서 안쪽 트랙으로 진행하며, 이전 요청을 모두 처리한 후 진행함
- 스캔 도중 추가 요청이 있더라도 이전 요청을 처리한 후에 처리된다고 볼 수 있음
- 스캔보다는 균등한 시간 배분이 가능하지만, 비효율적임
- 룩 스캔은 진행 방향의 요청이 없는 경우, 양 끝단까지 가지 않고 바로 방향을 전환함
- 꺾이기 전에 현재 진행 방향에 대한 트랙의 요청이 추가 요청이 있는지 판단해야 함

00:01
사과목 마지막 장 마지막 섹션입니다. 기억장치 관리 같이 한번 보도록 할게요. 첫 번째로 일단 주격장치 관리 전략에 대해서 나와 있습니다. 보통 컴퓨터는 cpu가 접근해야 할 데이터를 보조개혁 장치에서 주기억장치로 꺼내서 접근하고 운용하는 이런 형태를 가집니다. 보조기업 장치는 우리가 알고 있는 SSD 또는 하드디스크 이런 것들이고요. 주기업 장치는 우리가 흔히 얘기하는 램 메모리 이런 것들을 얘기하죠. 보조개혁 장치는 속도가 좀 느리지만 용량이 크고 저렴하고요. 주기적 장치는 속도가 빠르지만 용량이 작고 비쌉니다. 상대적으로 주기억 장치의 공간이 더 작기 때문에이 공간을 효율적으로 사용하기 위한 전략이 필요하다라는 거죠. 자 그래서 여러가지 전략이 있는데 첫 번째로 반입 전략은 데이터를 언제 주기억장치로 옮길 건지 반입할 건지 적재할 건지를 결정하는 겁니다. 요구반입 전략과 예상 반입 전략이

01:02
있어요. 말 그대로 요구할 때 또는 예상해서 반입을 시키는 형태라고 보시면 되겠고요. 다음으로 배치 전략이 있어요. h 전략은 데이터를 주기억장치에 어떤 공간에 위치시킬 건지를 결정하는 겁니다. 자 그래서 방식이 총 3가지가 있는데 최초 적합 최적 적합 최악 적합이 있습니다. 최초는 가능한 공간 중 첫 번째 공간 최적은 여유 공간을 가장 적게 남기는 공간 최악은 여유 공간을 가장 크게 남기는 공간 이렇게 보시면 되는데이 여유 공간을 단편화라고 표현합니다. 이거에 대해서는 조금 있다가 조금 더 볼 거예요. 아래의 표를 보면은 10kb의 데이터를 배치하는 경우를 생각해 보자고 되어 있죠. 메모리 공간이 총 4군데 있습니다. 여기 여기 여기 있는데 요놈은 이미 사용 중이에요. 그러니까? 얘는 고려사항이 아니고요. 그러면이 첫 번째 세 번째네 번째

02:00
공간 중에 어디에 집어 넣을 거냐라는 거죠. 자 그래서이 첫 번째 공간은 퍼스트 핏 최초 적합입니다. 집어넣을 수 있는 공간 중에 가장 첫 번째 대신에 여기서는 2kb의 단편화가 발생이 되죠. 다음요. 세 번째는 베스트 핏이에요. 단편화가 거의 없습니다. 자 그리고 마지막은 워스트 핏이죠. 단편화가 제일 크게 발생합니다. 이렇게 보시면 돼요. 그러니까? 퍼스트 핏에서도 단편화가 좀 더 크게 발생할 수 있는 거고요. 어쨌건 이런 경우를 봤을 때 어느 부분에 할당을 해야 퍼스트고 베스트고 워스트인지를 구분할 수 있어야 됩니다. 자 여기까지 보고 넘어갈게요. 다음은 교체전략인데요. 주기업 장치의 모든 영역이 이미 사용 중인 상태에서 항상 항상 공간이 한정되어 있기 때문에 이미 꽉 차 있을 수 있죠. 그래서 기존 데이터 중에 어느 걸 교체했었 결정할 수 있습니다. 6가지가 있는데 이거 하나씩 살펴볼

03:02
겁니다. 다음으로 주기억장치 할당 기법이 있어요. 데이터를 주기억장치에 어떻게 할당할 건지에 대한 기법입니다. 연속으로 할당하는 기법과 분산에서 할당하는 기법이라고 되어 있죠이 부분을 또 자세하게 좀 보도록 할게요. 일단 단일 분할 할당 기법입니다. 말 그대로 단 1이죠. 한 명의 사용자만 사용하도록 하는 기법이에요. 프로그램의 크기가 작은 경우에는 영역이 낭비될 수 있고 큰 경우에는 실행이 불가능할 수 있다. 이렇게 구분을 하시면 되겠습니다. 다음은 오버레이에요. 오버레이는 겹친다는 뜻이죠. 주기억장치 보다. 큰 프로그램을 실행하기 위한 기법인데 공간이 부족해지면 불필요한 위치에 있는 메모리를 중첩시켜서 적재를 하는 형태로 구성을 하는 겁니다. 다음은 스와핑 기법인데 스와핑은 다른 프로그램으로 교체한다고 되어 있습니다이 위쪽에 있는 오버레이 같은 경우에는 불필요한 조각을

04:01
교체하는 형태인데 아래쪽에 스와핑은 프로그램 자체를 교체하는 방식이죠. 자 그래서 수압 in과 수압 아웃이 있는데이는 보조기업 장치에 있는 프로그램이 주기혁 장치로 들어간다. 그래서 수압인이고요. 그 반대의 경우는 아웃입니다. 이렇게 구분을 해주시면 되고요. 다음은 다중 분할할당기법이에요. 말 그대로 여러 조각으로 나누는 거기 때문에 여기에서 단편화라는 개념이 굉장히 중요하게 작용을 합니다. 주기억 장치에서 공간이 할당 및 반납에 따라서 공간들이 조각 나서 그 공간을 쓰지 못하는 형태 이거를 단편화라고 하는데요. 내부 단편화 외부 단편화라고 있죠. 내부는 데이터나 프로그램을 할당을 했어요. 예를 들어서 이만한 공간에이 정도를 쓰게 된 거죠. 이만큼을 할당을 했어요. 자 그러면 요만큼이 남죠. 내부에 이걸 내부 단편화라고 합니다. 그리고 외부 단편화는이 프로그램의 크기가 커서

05:01
아예 할당이 안 되는 거예요. 그래서 프로그램은 이만한데 실제 공간은 요만한 거죠. 그러면 얘는 이걸 집어넣을 수가 없죠. 그랬을 때 얘가 외부 단편입니다. 그렇게 어렵지 않죠. 단편화를 해결할 수 있는 방안은 두 가지가 있어요. 통합과 압축이 있는데 어쨌든 공간을 합치는 거거든요. 통합이라는 거는 서로 붙어 있는 공간을 합치는 거고요. 압축은 서로 떨어져 있는 공간을 합치는 겁니다. 구분이 어렵지 않죠이 정도 보시면 되겠습니다. 다음으로 고정 분할 할당 기법이라고 있네요. 주개업 장치의 사용자 영역을 여러 개의 고정된 크기로 분할한다라고 되어 있어요. 실행하는 프로그램의 크기를 미리 알고 있어야 가능하겠죠. 자 그리고 단편화 발생으로 인해 주기억 장치의 공간 낭비가 크다고 되어 있습니다. 여기까지 보시면 될 것 같고요. 이번에는 가변이죠. 가변은 당연히 필요한만큼만 영역을 분할하는

06:00
방법이에요. 효율적으로 사용할 수 있다라고 되어 있습니다. 가변이니까요. 이렇게까지 보시면 되겠고요. 자 다음은 이제 페이징에 대해서 공부를 할 겁니다. 일단 가상 기억장치에 대해서 먼저 좀 다루도록 할게요. 가상 기억 장치라는 것은 보조기억장치의 일부를 주기억 장치처럼 가상으로 사용한다. 그래서 가상 기억 장치에요. 이걸 쓰는 이유는 용량이 큰 프로그램을 실행할 수 있도록 하기 위해서죠. 만약에 이렇게 사용했을 때 속도가 좋아진다고 하면 주기억 장치를 쓸 필요가 없겠죠. 근데 우리가 주기적 장치를 쓰는 이유는 속도를 향상시키기 위해서고 보조개혁장치는 데이터를 저장하기 위한 부분입니다. 자 그런데 보조개혁 장치는 느리지만 데이터를 저장할 수 있다는 특성이 있는 건데이 느린 기억 장치를 가상으로 주기업 장치처럼 사용을 하게 되면 프로그램을 실행할 때 훨씬 더 많은 주기업 장치 공간이 확보가 되기

07:01
때문에 용량이 큰 프로그램을 실행할 수 있다. 이렇게 생각을 하시면 되겠습니다. 일단 스와핑 기법에서 발전이 됐다고 나와 있고요. 연속 8단 방식에서 발생하는 단편화 앞에서 다뤘죠이 문제를 해결할 수 있다. 페이징 기법과 세그멘테이션 기법은 두 개가 확실하게 설명에 차이가 있습니다. 페이징 기법은 동일한 크기의 페이지로 나뉜다. 세그멘테이션은 다양한 크기의 논리적인 세그먼트를 나눈다라는 부분 그리고 페이징은 외부 단편화가 발생하지 않고 내부 단편에서 발생하고요. 그 다음에 세그멘테이션은 내부 단편화가 발생하지 않는데 외부 단편에는 발생할 수 있다고 되어 있어요. 서로를 잘 구분해 주시면 되겠습니다. 그리고 추가로 세그멘테이션 같은 경우에는 논리적인 세 나눈다는 개념 때문에이 논리적인 세그먼트 위치를 파악하는 형태의 문제가 나오는 경우가 있어요. 아래쪽에 표를 같이 한번 볼게요. 세그먼트의 시작 주소와 상대 주소를 이용해서 실제 물리적인 주소를 계산할 수

08:01
있다고 되어 있죠이 부분을 같이 좀 봐줘야 되는데 예를 들어서이 부분이죠. 이렇게 표가 나와 있는 상태에서 논리 주소창이 이렇게 주어지는 경우입니다. 이거는 1번 세그먼트에서 150만큼 떨어진 위치란 뜻이에요. 자 그러면 1번 시작 위치가 700이니까? 여기에 150을 더한 위치 852 현재 접근하고자 하는 위치다. 이렇게 볼 수 있다는 얘기죠. 이해되시죠요. 정도까지 보고 넘어가시면 되겠습니다. 자 다음은 앞에서 잠깐 봤던 페이지 교체 알고리즘의 종류별로 특징을 같이 한번 보도록 할 거예요. 여기서 가장 중요한 개념이 페이지 부재라는 개념입니다. 일단 페이지 교체 정의라고 되어 있죠. 페이지 프레임이 비어 있을 때 차례대로 페이지를 적재한다라고 되어 있는데 예를 들어서 페이지 프레임이 이렇게 세 칸이 있어요. 자 그런데 여기에 데이터가 페이지가 채워져

09:00
있습니다. 그러면 그 다음 페이지는 여기에 기록하고요. 그 다음 페이지는 여기에 기록한다는 뜻이에요. 자 그런데 지금 보면 페이지가 기록되고 기록되고 기록됐죠이 페이지가 기록된 이유는이 페이지 프레임에 해당 페이지가 없었기 때문이에요. 실제 데이터를 기준으로 한번 볼게요. 자 페이지 3번 5번 이렇게 적혀 있다고 생각을 해보겠습니다. 그리고 내가 사용할 페이지가 3 7 2 4라고 가정을 해 볼게요. 자 그러면이 상태에서 내가 3번 페이지를 쓸 거예요. 보니까? 3번 페이지가 있네요. 그러면 그냥 얘를 무시합니다. 자 그런데 그 다음 7번 페이지를 사용하려고 보니까? 페이지 프레임의 7번이 없죠. 그러면이 7번을 여기에 넣어 줘야 돼요. 근데 방금 페이지가 페이지 프레임에 없다라고 표현을 했는데 이게 페이지 부재입니다. 페이지가 없다. 부재중 할 때 그 부재예요. 그래서 얘가 이렇게 들어가죠. 이런 식으로 진행이 되는게 이제

10:00
페이지 부재의 개념이에요. 자 그러면 이제 그 다음이 문제입니다. 이렇게 페이지에 공간이 남아서 페이지를 할당할 때는 차례대로 적재를 하면 그만인데 꽉 차 있을 경우에는요. 나머지 페이지를 어디에다가 집어넣을 거냐 어느 페이지를 교체할 거냐라는 부분이에요이 부분에 대해서 같이 한번 공부를 해 볼게요. 첫 번째로는 opt라고 되어 있습니다. 옵티몰 가장 오랫동안 사용하지 않을 페이지를 교체한다고 써 있습니다. 페이지 부재 회수가 가장 적게 발생하는 가장 효율적인 알고리 되어 있습니다. 이건 예시 말고 공식을 알고 계시면 돼요. 페이지 참조 횟수와 부제 횟수를 보는 거죠. 자 그래서 페이지 적중률이 높은지 낮은지를 보는 거죠. 그래서 낮은 걸 교체하는 형태라고 보시면 되겠습니다. 다음은 fifo예요이 fifo라는 키워드를 굉장히 자주 보죠. 가장 먼저 적재된 페이지를 교체하는 기법이라고 되어 있어요. 이해가 쉽다고 되어 있는데 한번 볼게요.

11:01
참조 페이지가 13315424라고 되어 있습니다. 여기 나와 있죠. 이거를 하나씩 참조를 해야 돼요. 페이지 프레임에 있으면 참조를 하면 되고요. 없으면 페이지 불재죠. 없으면 집어넣어 줘야 됩니다. 그렇게 되면 어느 쪽에 집어넣어야 되는지 한번 보도록 할게요. 페이지 프레임이 3칸이 있어요. 여기에는 일단 비어 있겠죠. 자 그래서 이건 결과를 나타낸 거예요. 페이지 1을 참조하려고 했더니 당연히 아래쪽에 비어 있었겠죠. 그래서 부재가 발생을 해요. 그리고 나서 여기 집어넣습니다. 지금이 결과에요. 3도 마찬가지죠. 3도 사용하려고 보니까? 페이지 프레임이 없네요. 발생하고요. 집어넣습니다. 자 그다음 또 3을 참조하려고 봤더니 이번에 있죠. 그러면 페이지 부재 발생을 하지 않아요. 그리고 3을 사용하죠. 자 그다음 1도 마찬가지죠. 여기 있습니다. 사용하지 않습니다. 페이지 부재 발생하지 않아요. 다음은 옵니다. 오는 페이지 프레임이 없죠. 그러면

12:00
페이지 부재가 발생을 하고 5가 들어가는 거예요. 자 다음입니다. 이제 핵심이죠. 페이지 프레임이 이제 꽉 찼어요이 꽉 찬 상태에서 페이지 부재가 발생했을 때 없는게 있을 때 이걸 어디에다. 집어넣을 거냐라는 거죠. 자 여기서는 가장 먼저 적재된 페이지를 교체한다고 되어 있습니다. 적재된 순서를 볼까요. 얘가 1번이고요. 얘가 2번이고요. 얘가 3번입니다. 그러니까요. 1번을 없애고 4번이 들어가 있는 거예요. 감이 오시죠. 자 그 다음에요. 2번 같은 경우는 어떻게 돼요. 얘는 지금 일단 순서가 1 2 3에서 교체가 됐기 때문에 다시 얘가 1이구요. 얘가 2고 얘가 3이 된 상태예요. 자 그러면요. 3에 해당하는 부분을 교체를 하는 거죠. 이렇게 가는 거라고 보시면 돼요. 페이지부재 발생했기 때문에 그리고 마지막은 4가 존재하기 때문에 더 이상 바뀌지 않고 마무리가 되는 거죠. 자 이렇게 가장 먼저

13:01
할당된게 뭔지만 체크할 수 있으면은 그렇게 어려운 개념은 아니다. 이렇게 보는 거죠. 자 그래서 페이지 부재가 몇 번 발생을 하냐 또는요. fifo의 기법에 대한 설명 이런 것들을 파악할 수 있어야 된다. 또는 제일 마지막에 이렇게 페이지 프레임에 존재하게 되는 페이지들이 어떤게 있냐 이런 것들을 물어볼 수가 있습니다이 정도까지 파악을 할 수 있으시면 돼요. 다음은 lru입니다. 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법이라고 되어 있어요. 각 페이지마다. 스택을 누워서 현 시점에서 가장 오랫동안 사용하지 않은 페이지를 교체한다고 되어 있습니다이 스택을 숫자로 표현을 해야 되기 때문에 제가 편의상이 참조 페이지를 제가 영어로 써놨는데 실제로는 숫자일 거예요. 여기서는 참고용이라고 보시면 됩니다. 3주 페이지가 요런 식으로 되어 있어요. 그리고 페이지 프레임이 3칸인

14:01
경우입니다. 한번 보도록 하죠. a 일단 없죠. 발생하고요. R 일단 없어요. 발생하고요. 하나씩 잘 집어넣습니다. 넣었어요. 넣고요. 자 그리고 r은 있어요. 그리고 a도 있죠. 근데 여기서 중요한 부분은 이거예요. a가 들어왔는데 여기서 사용 안 했죠. 그리고 여기서도 사용 안 했습니다. 페이지가 지금 들어오거나 교체되는 동안 두 번 정도 사용을 안 했기 때문에 2라고 써 있는 거예요. 자 근데 지금 알 같은 경우에는 여기서 일로 넘어가면서 한번 사용을 했죠. 그렇기 때문에 0으로 바뀌는 거예요. 이걸 스택이라고 표현한 겁니다. 사인단 얘기죠. 자 그리고 넘어갔습니다. 여기서 r은 여기서 사용했지만 넘어가서는 한번 사용은 안 했죠. 그러니까? 1로 증가가 되는 거고요. a 같은 경우는 사용을 했기 때문에 0으로 바뀌는 거예요. 어떤 느낌인지 아시겠죠. 자 그 다음은 쉽니다. 시에는 없으니까? 부재 발생하고요. 집어넣습니다. 그리고 사용 안 된

15:02
페이지들은 스택을 1씩 증가시켜 주는 거예요. 1 0에서 1 이렇게 자 그 다음은 b인데요. 이미 꽉 차 있는 상태예요. b를 사용하려고 봤더니 페이지 프레임의 b가 없어요. 요걸 기준으로 봐야겠죠. b가 없습니다. 그러면 일단 페이지 부재가 발생을 해요. 그리고 나서이 b가 어디에 들어갈 거냐라는 건데 스택을 보시면 됩니다. r이 가장 사용이 안 된 상태죠. 그래서요. r을 없애고 b를 집어넣는 거예요. 자 그러면이 상태에서 가장 사용이 또 안 된 건 뭐예요. a죠. 그래서 새로운 k를 집어넣을 때 부재 발생을 하면서 a를 없애고 k를 집어넣습니다. 어떤 느낌인지 아시겠나요. 자 그 상태에서 또 보는 거죠. b는 존재하네요. 그러니까? 페이지 부재 발생은 하지 않고요. b의 스택을 0으로 초기화를 해주는 겁니다. 자 이런 식으로 흘러간다라고 생각을 하시면 되겠습니다. 넘어갈게요.

16:00
다음은 lfu입니다. 사용 빈도가 가장 적은 페이지를 교체한다. 자주 사용되는 페이지는 사용 횟수가 많아서 교체되지 않고 사용된다고 되어 있어요. 빈도입니다. 빈도 최근에 사용되지 않으니 아니에요. 다음으로는 nur이네요. nru랑 비슷하다고 되어 있어요. 이름도 비슷하죠. 키워드도 최근에 사용하지 않은 페이지를 교체하는 기법이다. 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로 lru에서 나타나는 시간적인 오버헤드를 줄일 수 있다고 되어 있어요. 최근 사용 여부를 확인하기 위해서 각 페이지마다. 참조비트와 변형 비트가 사용된다고 되어 있습니다. 하나씩 보도록 하죠. 참조 밑에는 말 그대로 호출이 되냐 안 되냐의 문제에요. 호출이 안 됐을 때는 0이고 호출이 되었을 때는 1입니다. 변형 밑에는 말 그대로 페이지 자체가 변형이 됐는지에 대한 부분이죠. 페이지가 변형되지 않았을 때 변형 되었을 때는 1입니다.

17:01
그러니까? 호출과 변형이 되면 1로 바뀌는 거고이 1의 개수가 많을 경우에 교체가 되지 않는다는 거예요. 자 그래서 둘 다. 참조도 안 되고 변형도 안 되는 애가 가장 우선순위로 교체가 되고요. 그 다음에 변형만 된 애가 그 다음이고 참조만 된 애가 그 다음 그 다음에 변형도 되고 참조가 되면 제일 마지막 순이다. 이렇게 보시면 되겠습니다이 부분이 핵심이겠죠. 요정도 보고 넘어갈게요. 다음은 scr인데 fifo의 단점을 보완한다고 되어 있어요. 오랫동안 주기억 장치에 있던 페이지 중에 fifo 같은 경우에는 올해 있을수록 교체가 될 확률이 높아지는데 올해 있는 애들 중에 자주 사용되는 애들은 교체를 하지 않게끔 하는 방법이란 뜻이에요. 이렇게 정리를 해 주시면 됩니다. 다음은 페이지 관리 방식입니다. 경우가 좀 많이 나올 거예요. 여기서도

18:01
우선 페이지 크기의 영향이라고 되어 있죠. 페이지 크기가 작을 경우와 페이지 크기가 클 경우에 대해서 나와 있어요. 우리가 워킹셋이라든지 로컬리티는 아직 안 배웠어요. 아래쪽에서 좀 볼 거니까? 이걸 일단 넘기고요. 페이지 맵 테이블을 좀 볼게요. 맵 테이블 크기가 상승한다고 되어 있어요. 여기는 맵 테이블 크기가 감소한다고 되어 있는데 테이블 크기가 상승한다는 것은 거기 안에 있는 데이터가 많아진다는 소리입니다. 페이지 크기가 작을 경우에는 개수는 많아지겠죠. 작게 쪼개지니까요. 그래서이 각각의 맵핑에 대한 정보가 맵 테이블에 들어가야 되기 때문에 정보가 많아질 수밖에 없어요. 그러니까? 속도라든지 입출력 속도가 저하된다는 소리고요. 페이지 크기가 클 경우에는 맵핑을 해야 되는 페이지 자체 개수가 줄어들기 때문에 크기가 감소된다고 표현이 되어 있는 거고요. 맵핑 속도라든지 입출력 속도가 상승한다. 이렇게 써 있는 겁니다. 자 어떤 느낌인지 아시겠죠. 자 그리고이

19:01
워킹섹과 로컬리티는 아래쪽에서 한번 보시면은 대충 어떤 느낌인지 또 이해가 되실 거예요. 같은 개념입니다. 로컬리티를 먼저 보죠. 구약성이라고 되어 있습니다. 특정 페이지를 집중적으로 참조하게 되는 특성 어떤 지역에 있는 페이지를 집중적으로 참조한다. 뭐 그런 뜻이죠. 자 그래서 여기에 시간 구역성과 공간 구역성이 있는데 시간 같은 경우에는 일정 시간 동안 집중적으로 접근되는 형태고요. 공간 구역성은 말 그대로 특정 공간의 페이지를 집중적으로 접근한다. 이렇게 보면 되겠습니다. 다음으로 워킹 셋은 특정 단위 시간 동안만 자주 참조하는 페이지들의 집합이라고 되어 있어요. 워킹 셋을 주기억 장치의 상주를 시킴으로써 페이지 교체 및 부재가 줄어들어서 메모리 관리 안정성이 보장된다고 되어 있어요. 그리고 특정 단위 시간 동안만 자주 참조하는 거기 때문에 시간이 지나면 당연히 변화가 되겠죠이 정도 봐주시면 될 것

20:00
같습니다. 다음으로 페이지 부재 빈도가 나와 있어요. 페이지 부재율에 따라서 주기억 장치에 있는 페이지 프레임의 수를 늘리거나 줄여서이 부제율을 적정 수준으로 유지하는 방식이 페이지 부채 빈도입니다. 부재 빈도가 많거나 적으면 올리거나 내릴 수 있게끔 프레임의 수를 늘린다. 줄인다. 뭐 이런 얘기죠. 요건 어려운 개념은 아니고요. 다음은 프리페이징 프리는 미리 준비한다는 개념이죠. 예상되는 모든 페이지를 한 번에 적재한다. 그래서 초기에 과도한 페이지 부재를 방지하기 위한 기법이다라고 되어 있어요. 이 정도까지 보시면 되겠습니다. 페이지 교체 전략이었구요. 다음은 스레싱입니다. 스레싱은 어려운 개념은 아니에요. 처리 시간보다. 페이지 교체 시간이 더 많아지는 현상이에요. 자 이런 현상이 왜 많아지는 거냐면 스윙 과정 중에 페이지 부재가 너무

21:01
자주 발생하는 거예요. 그래서 페이지 교체하는 시간을 총 합쳐보면 처리 시간보다. 훨씬 더 많아지는 뭐 이런 형태가 되는 거죠. 그래서 스트레칭 현상을 방지하는 방법이 아래쪽에 나와 있죠이 부분을 유지해야 된다. 암기해 주셔야 됩니다이 정도까지 보고요. 다음으로 파일 설계 또는 파일 편성에 대해서 보도록 할게요. 파일을 구성하는 방법이라고 보시면 되는데요. 파일 시스템에 대한 첫 번째 순차 편성입니다. 말 그대로 논리적인 순서에 따라서 물리적으로 연속된 위치에 기록합니다. 일괄처리의 효율적이라고 되어 있죠. 순서대로 되어 있기 때문에 기록 밀도가 좋고 파일 이후 처리가 불편합니다. 그러니까? 기록만 해두고 어떠한 추가 변경 삭제 등을 하지 않는 백업 등에서 사용되는 형태에요. 탐색의 속도는 빠른 편인데 순채 탐색만 쓸 수 있기 때문에 시간 복잡도 보셨죠.

22:00
효율은 떨어진다. 이렇게 보시면 되겠습니다. 다음은 임의 편성입니다. 랜덤 편성이라고도 하고요. 직접 편성이라고도 해요. 이미 편성이라고도 하고요. 좀 헷갈릴 수 있는데 어쩔 수 없죠. 실제로 이런 식으로 문제가 나오니까요. 어찌됐건 랜덤 편성은 일정한 순서가 없이 임의로 랜덤으로 데이터를 기록하는 방식이라고 되어 있습니다. 캐싱 해시 함수를 얘기하는 겁니다. 해시 함수를 적용해서 보관된 데이터에 위치에 따른 처리 속도가 일정하다라고 되어 있어요. 우리가 해시탐색 공부할 때 시간 복잡도가 5 1이었어요요. 부분을 이야기하는 겁니다. 랜덤 편성의 특징을 통해서 처리하고자 하는 데이터에 직접 접근이 가능하다. 그래서 직접 편성이라고도 이야기하는 거고요. 대신이 키 변환에 의한 지연 시간이라든지 충돌 문제에 대한 해결방안이 필요하다라고 되어 있습니다. 우리가 해시 탐색 공부할 때 봤던 내용 그대로죠. 이렇게 보는 거고요.

23:01
다음은 색인 순차 편성이에요. 색인 순차 편성은 논리적 순서에 따라 물리적으로 연속된 위치에 기록하는 것까지는 맞아요. 여기가 이제 순차죠. 그다음 저장 데이터에 대한 색인 인덱스를 구성해서 랜덤 처리와 일반 순차 처리를 병행할 수 있게 하는 겁니다. 그게 색인 순차 편성이에요. 색인구역과 기본 데이터 구역 오버플로 구역으로 구성된다고 되어 있고요. 각각이 어떤 건지 간단하게만 보면 세균 구역은 말 그대로 목차 인덱스를 구성하는 영역 기본 데이터는 실제 데이터가 편성되는 영역 그리고 오버플로우는 인덱스 등을 통해서 편성될 추가 데이터가 기록이 안 되는 경우가 생길 때가 있죠. 넘치거나 할 때 그럴 때 별도로 보관하기 위한 구역이다. 이렇게 보시면 되겠습니다. 어렵지 않죠. 세 가지 구역이 있는 거고요. 색인 순차 편성의 특징 융통성 별도의 공간 비료 그 다음에

24:01
처리 횟수가 많아질 경우에 효율이 떨어질 수 있기 때문에 재편성 주기적으로 재편성이 필요하다. 이렇게 세 가지라고 보시면 되겠습니다. 넘어갈게요네 번째로 디스크 스케줄링입니다. 일단 디스크가 뭔지 알아야 되는데 디스크는 디스크 드라이브의 줄임말인데 디스크 드라이브는 우리가 알고 있는 하드디스크 그걸 이야기하는 거라고 보시면 돼요. 디스크는 여러가지로 구성이 되어 있는데요. 트랙과 섹터 그 다음에 실린더 액세스함 디스크 헤드 뭐 이렇게 써 있습니다. 간단하게 이야기를 해보자면 그 여러분들 요즘에 레코드판으로 음악 듣는 거 아시죠. 레코드가 요런 식의 레코드판이 있죠이 레코드 판에 이렇게 생긴 거 뭐 하나를 올려두죠. 그리고 여기에 바늘 같은게 있어서 얘를 이렇게 올려두면요. 원판이 이렇게 돌아가면서 음악이 나오잖아요. 자 요게 디스크입니다. 자 그래서 한번 보면 트랙이라고 되어 있죠이 디스크를

25:00
보시면은 미니 세상에 동심원 모양으로 홈이 굉장히 많이 파여져 있어요. 그걸 트랙이라고 합니다. 그래서 그 트랙을 이렇게 따라가면서 음악이 나오는 형태에요. 자 그리고 섹터는 얘를 피자처럼 이렇게 나누는 거예요. 이런 식으로 이거 하나하나가 섹터가 되는 겁니다. 실린더는 모든 디스크의 특정 위치에 세력에 대한 논리적인 집합이라고 되어 있는데 이건 무슨 얘기냐면 지금 이거는 정면으로 봤을 때고요. 약간 측면으로 보게 되면 디스크 드라이브는 이런 원판이 아래쪽에 여러 개 굉장히 많아요. 그래서 옆쪽에서 보면 이렇게 있고 밑에 하나가 더 있고 밑에 하나가 더 있고 밑에 하나가 더 있어서 요게 이렇게 고정되어 있는 한 축을 통해서 고정되어 있는 이런 형태입니다. 훨씬 더 많이 들어가 있겠죠. 자 그리고이 액세스 암이라는 건 요거예요. 요거 길다는 거이 액세스함이이 판마다. 존재합니다. 이렇게

26:03
판마다. 존재하고 이렇게 고정이 되어 있어요. 이런 형태라고 보시면 됩니다. 그리고 디스크 헤드 같은 경우에는 여기 살짝 바늘 나와 있던 부분이 있죠. 여기는 실제로 바늘이 있진 않겠지만이 끝에 데이터를 읽을 수 있는 헤드라고 보시면 돼요. 자 그러면이 실린더라는 건 뭐냐면 이거 트랙이 있다고 했죠. 일정 트랙 부분을 세로로 요렇게 집합을 모았을 때 요놈을 실린더라고 표현을 합니다. 그래서 특정 위치에 트랙에 대한 모든 디스크의 집합이라고 써 있는 거예요. 그래서 맨 위에 있는 요만큼이라고 하면 그 아래에도요. 부분 그 아래에도이 부분 그 아래의 디스크도이 부분에 가지고 그 부분만 모아 놓은 걸 실린더라고 한다라는 거죠이 신림더가 왜 필요하냐면 방금 말씀드렸듯이 액세스함이 액세스 암끼리 고정이 되어 있습니다. 자 그래서 맨 위에서 맨 위에 있는 요놈이요. 부분을 가리키고 있다고 하면 아래쪽에 있는 액세스 암들도 다. 그 부분을 가리키고

27:01
있어요. 고정이 되어 있기 때문에 같이 움직인다는 거죠. 그래서 같은 실린더 안에 있는 데이터들은 읽기가 빨라요. 왔다. 갔다를 할 필요가 없으니까요. 그런 개념이라고 보시면 됩니다. 그런데 제가 이렇게 좀 길게 설명을 하고 있는데 사실 이게 크게 중요한 건 아니에요. 문제가 출제가 되거나 그러는 비중이 굉장히 적기 때문에 대충 이런거다라고 설명을 드리는 겁니다. 자 아무튼 이런데 디스크는 보조개혁 장치의 한 종류로서 기억 장치 중 가장 속도가 느린 편에 속합니다. 왜 그러냐면 방금도 받듯이 물리적인 장치를 이동하면서 데이터를 기록하고 읽어나갑니다. 그렇기 때문에 훨씬 느린 거죠. 처리 속도가 빠른 cpu의 효율적인 데이터 처리를 위해서 다양한 스케줄링 방법이 존재한다라고 되어 있습니다. 자 그러면 마찬가지 이것도 속도에 대한 부분이기 때문에 시간이라는 개념이 좀 있어요. 디스크 접근 시간을 이해하기 위해서 앞에 부분을 공부했다고 실린더 뭐

28:01
이런 걸 공부했다고 생각하시면 됩니다. 시크타임을 먼저 볼게요. xs 암이 헤드의 위치를 특정 트랙으로 이동시키는데 걸리는 시간이라고 되어 있습니다. 가령 이런 거죠. 한번 볼게요. 자 이렇게 생긴 왼쪽처럼 생긴 디스크가 있다고 생각을 해 볼게요. 지금 제가 파란색으로 여러가지 원을 그린게 트랙입니다. 그러면이 중에 예를 들어서 내가 원하는 값이요. 위치에 있다고 생각을 해볼게요요. 위치 자 그렇게 되면 액세스함은 액세스함 끝에 달린 헤드의 위치를요. 트릭 라인으로 옮겨 주는 거예요. 예를 들어서 액세스함이 이렇게 되어 있다고 생각을 해 볼게요. 자 그러면요. 안쪽에서 두 번째 트랙을 지금 접근을 하고 있는 건데 얘를 이렇게 바깥쪽으로 당겨 주는 겁니다. 이렇게 하게 되면 해당 트랙의 액세스 암의 헤드가 위치하게 되는 거죠. 여기 있는 걸 요렇게 바꿔주는

29:01
얘가 헤드의 역할이에요. 요렇게 이동을 하는 겁니다. 자 그래서 요렇게 이동을 시켜줘요요. 상태 이렇게 이동을 시켜 주는게 시크타임이고요. 로테이션 타임은 실제요. 디스크 판이 돌아가는 겁니다. 이게 판이 돌아가면서 이게 돌게 되면은 여기 아닌 데이터가 같이 움직이겠죠. 그러니까? 자요. 부분이 이렇게 돌아가겠죠. 이렇게 돌아가서 2호 액세스 암 위치에 딱 이렇게 위치를 하게 돼요. 판이 돌아가니까요. 이걸 로테이션 타임이라고 합니다. 자 그러면 이제 헤드가이 데이터를 읽을 수가 있게 되죠. 그러면이 데이터를 읽어서 주기억 장치로 전송을 하게 되는데 그걸 트랜스퍼 타임이라고 하는 거예요. 트랜스퍼 타임 어느 정도 이해가 되시죠. 그래서 xs 암이 움직이는 시간이 시크타임 디스크 판이 움직이는 시간이 로테이션 타임 그 다음에 트랜스퍼 타임은 데이터가 전송되는 시간 이렇게 보시면 되겠습니다. 넘어갈게요. 다음은 f10입니다.

30:00
f12는 파일 컨트롤 블록이라고 있어요. 비슷한게 pcb가 있었죠. pcb는 프로세스 컨트롤이었어요. 운영체제가 특정 파일에 접근할 때 파악되어야 할 파일 관리 정보를 저장한다라고 되어 있고요. f12는 파일 디스크럽터라고도 한다라고 되어 있어요. 실행될 때 주기억 장치로 옮겨진다라고 되어 있죠. 정보가 같이 움직여야 되니까요. 여기까지 오면 될 거 같고요. 다음으로 레이디에 대해서 보겠습니다. 레이드는 다수의 하드디스크를 하나의 드라이브처럼 사용하는 방식이에요. 디스크에 접근성능을 높일 수도 있고 안정성을 높일 수도 있습니다. 다양한 방식이 있는데 레이드 0부터 15 0+1+0 여러 가지가 있죠. 각각 특징이 나와 있는데 어려운 개념이 아니기 때문에 암기를 잘 해주시면 됩니다. 어떤 특징이 있는지만 보시면 돼요. 속도 향상 안정성 향상 안정성과 효율이 뛰어난요. 정도만 체크할 수 있어도 충분히 문제에 맞추실 수 있습니다.

31:00
넘어갈게요. 자 이제 마지막으로 디스크 스케줄링까지 보고 마무리를 하도록 하겠습니다. 디스크 스케줄링은 몇 가지 6가지 였나요. 정도가 있는데 같이 한번 보도록 하죠. fcfs입니다. 보통 f는 퍼스트에요. 입출력 요청이 들어온 순서대로 처리한다고 되어 있어요. 단순하고 공평하지만 디스크 헤드의 이동 방향이 바뀌어서 진행되므로 비효율적이라고 되어 있습니다. 왔다. 갔다를 많이 한다는 얘기죠. 아까도 말씀을 드렸는데 그 판이 돌아가는 시간이랑 액세스 암이 움직이는 시간 데이터가 전송되는 시간 이렇게 있었잖아요. 데이터가 전송되는 거는 전기적인 부분이기 때문에 굉장히 빨라요. 하지만 액세스함이 움직이는 건 물리적인 장치 자체가 움직이는 거기 때문에 속도가 굉장히 느립니다. 그래서 헤드 방향이 바뀐다는 거는 굉장히 비효율적이다. 이렇게 볼 수가 있다는 뜻이에요. 이해가 되시죠. 자 그래놓고 아래쪽에 그림을 한번 해석을 해 볼게요. 현재 헤드의 위치는 100이라고 되어

32:00
있습니다. 이게 무슨 얘기냐면 이런 식으로 트랙이 있다고 가정을 해볼게요. 이런 식으로 지금 저는 트랙을 4개밖에 안 그린 거예요. 그런데 실제 트랙은 200개 정도 존재합니다. 그러면이 안쪽에 있는 트랙이 0번 트랙이고요이 바깥쪽에 있는 트랙이 200번 트랙인 거예요. 정확하게는 199번 트랙입니다. 0부터 시작했으니까요. 이런 식으로 되어 있는 건데 현재 액세스함이 예를 들어서 100이라고 치면이 중간지점이죠. 여기에 위치하고 있다는 뜻이에요. 이런 느낌에서 지금 시작을 한다는 거고요. 그리고 나서 입출력 요청이 90 180 570 24시간 뜻이에요. 그래서 갔다가 50 갔다가 다시 180으로 갔다가 다시 50으로 갔다가 70으로 갔다가 20으로 갔다가 40으로 가는 형태입니다. 그러니까이 액세스함이 여기다가 여기다가 여기다가 여기다가 여기다가 이런 식으로 계속 움직인다는 거죠.

33:00
암이 많이 움직일수록 비효율적이다. 이렇게 생각을 하시면 돼요. 대충 아시겠죠. 넘어가서 다음 거 보겠습니다. 이번에는 SS tf입니다. 가장 가까운 트랙 헤드에서 헤드 기준입니다. 항상 현재 헤드에서 가장 가까운 트랙의 요청을 먼저 처리한다. 싱크타임을 최소화할 수 있다. 액세스 암이 움직이는 타임을 최소화할 수 있고 처리량이 극대화된다. 다만 응답 시간에 편차가 좀 커지고요. 안쪽이랑 바깥쪽 이쪽이죠. 안쪽이랑 바깥쪽 트랙에 요청에 대한 기하 현상이 무한대기 현상이죠. 발생할 수 있다라고 되어 있어요. 그래서 그림을 보시면은 이제 백과 95이 120 220 40까지 나와 있는데 한 번에 일단 다. 들여 보내는 거예요. 그랬을 때 가장 가까운 것부터 100에서 가장 가까운 90이죠. 90을 먼저 진행합니다. 그런 다음 90을 기준으로 제일 가까운 거 120이죠. 50이 아니라 120을

34:00
진행합니다. 그리고 나서이 120을 기준으로 가장 가까운 거 50이죠. 그래서 50을 진행하고요. 50에서 가장 가까운게 40이니까? 40으로 진행하고 그 다음에 20이니까? 20으로 진행하고 그 다음에 200으로 넘어가는 거죠. 자 그렇게 되면요. 200 같은 경우에는네 번째에 들어와 있지만 가장 마지막에 수행이 되죠. 가장 멀리 있기 때문에 이런 부분에 장점 단점이 있다. 이렇게 보시면 되겠습니다. 세 번째는 스킨입니다. 현재 디스크 헤드가 진행되는 방향에 있는 요청을 전부 처리한 다음에 반대로 가는 건데 또 하나의 포인트는 요청이 없어도 진행 방향의 마지막까지 일단 진행을 한 다음에 거꾸로 갑니다. 일단은 정점을 찍고 돌아올 수 있어야 된다는 얘기죠. 엘리베이터 기법이라고 한다고 되어 있습니다. 이런 특성 때문에 그림을 또 봐야겠죠. 일단 위치는 무조건 100이라고 돼 있네요. 원래 위치가 바뀔 수도 있습니다. 자 그래서 입출력 요청이 이렇게 되어 있는데 자 요걸

35:00
다. 체크해 보면은 여기가 90이고요. 여기가 70 여기가 110이고요. 여기가 120이겠죠. 여기가 170 그다음에 50이고요. 그 다음에 여기가 30 이렇게 되어 있습니다. 자 그러면 거리의 문제가 아니라 일단은 안쪽부터 쭉 진행을 하고 있죠. 이렇게 여기로 가기 시작한 순간 여기에 있는 건 다. 처리를 해야 돼요. 자 그리고 30까지 처리하면 더 이상 처리할게 없는데 일단 끝까지 갑니다. 그리고 나서 반대로 가요. 요. 순서대로 진행이 되는게 스캔이다. 이렇게 보시면 됩니다. 한쪽 방향을 쭉 다. 스캔한 다음에 다시 반대 방향으로 간다. 이렇게 보시면 되겠죠. 다음으로 서큘러 스캔 c스캔이라고 합니다. 스캔에서 c가 붙은 거죠. 항상 바깥쪽 트랙에서 안쪽 트랙으로 진행한다고 되어 있어요. 스캔 도중 추가되는 요청이 있더라도 이전 요청을 일단 모두 처리한 뒤에

36:00
처리된다고 되어 있죠. 스캔보다는 조금 더 균등한 시간 배분이 가능하다라고 되어 있는데 어쨌든 항상 바깥쪽에서 안쪽으로 왔다갔다. 액세스 암이 계속 움직여야 되니까? 어떻게 돼요. 비효율적이다라고 되어 있는 거죠. 한번 보면 됩니다. 여기 똑같이 이렇게 나와 있는데 일단 여기서 이쪽으로 쭉 가요. 바깥쪽에서 안쪽으로 가는 거니까? 이쪽으로 쭉 진행을 하고 여기서 이렇게 가는게 아니라 일단 맨 끝으로 가서 다시 순서대로 갑니다. 어떻게 보면 순환하는 것처럼 이렇게 갔다가 다시 돌아와서 이렇게 갔다가 다시 돌아와서 이렇게 가는 이런 형태로 순환을 하기 때문에 c가 붙은 거예요. 항상 바깥쪽에서 안쪽으로 다. 처리되면 다시 바깥쪽으로 돌아간 다음에 다시 안쪽으로 가면서 처리하는 이런 형태입니다. 비효율적이지만 균등한 시간 분배가 가능하다. 이렇게 기억을 하시면 되겠죠. 마지막으로 두 가지를 보겠습니다. 그냥 룩이 있고요.

37:00
c룩이 있습니다. 스캔을 룩으로 바꾼 거예요. c스캔에서 스캔을 룩으로 바꾼 겁니다. 그래서 룩에 대한 특징을 보는 겁니다. 여기에 특징은 끝까지 안 간다는게 특징이에요. 진행 방향의 요청이 없는 경우에 양 끝단까지 가지 않고 바로 방향을 전환해 준다라고 되어 있어요. 불필요한 헤드 이동 시간을 제거할 수 있지만 이렇게 꺾이기 전에 현재 진행 방향에 대한 트랙의 요청이 추가 요청이 있는지 여부를 판단해야 된다라고 되어 있습니다. 여기까지 보면 될 것 같은데요. 이미지를 한번 볼게요. 자 처음에 원래 스캔은 어땠냐면 이렇게 갔다가 끝까지 찍고 다시 넘어가는 형태였어요. 자 그런데이 부분이 없어졌죠. 아래쪽에 얘도 마찬가지입니다. 1로 넘어간 다음에 다시 진행을 하는 형태였는데이 끝까지 찍는 부분이 없어지고 여기서 다시 요렇게 넘어가는

38:00
형태로 바뀌었죠. 자 그래서이 부분에 대한이 부분에 대한 비효율성을 없앨 수 있다. 이렇게 생각을 하시면 됩니다. 여기까지 보도록 하죠.

728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/L3_QYcFcZeI?si=8yc7rJOvgL-2SB7u

1. 프로세스 관리와 인터럽트 처리

1-1. 프로세스의 개념과 상태 변화
- 프로세스란 CPU가 할당되어 실행되는 상태를 의미함
- 프로세스 정보는 체크포인트( pcb)에 기록되며, 상태가 변할 때마다 문맥 교환을 수행함
- (중요) 프로세스의 상태는 준비, 실행, 대기 상태로 나뉘며, 이 상호 변경 과정이 프로세스 관리의 핵심임
- 프로세스의 상태 변경은 디스패치, 타임 런아웃, 블록 웨이크업 과정을 통해 이루어짐

1-2. 인터럽트의 종류와 처리 절차
- 인터럽트는 프로세스가 수행 중 특정 요인에 의해 멈춰서 처리할 수 있는 상태를 의미함
- 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉘며 각각 다른 요인에 의해 발생함
- 인터럽트 발생 시 프로세스는 현재 연산을 중단하고, PCB(프로세스 컨트롤 블록)을 이용해 정보를 저장함
- (중요) 인터럽트 발생 후 다시 프로세스 상태를 복구해 원래의 상태로 되돌림

1-3. 프로세스 통신과 스레드의 개념
- 프로세스 통신은 직접적인 통신 없이 프로세스들이 통신을 하는 기법임
- 공유 메모리 메시지 전달 기법 등 다양한 방법이 있으며, 운영체제가 이를 관리함
- 스레드는 프로세스 내에서 실행되는 흐름의 단위로, 일반적으로 하나의 프로세스는 하나의 스레드를 가짐

2. 스레드와 프로세스 스케줄링 이해

2-1. 스레드의 종류와 특징
- 스레드의 다중 수행 가능성을 설명함
- 스레드의 빠른 처리가 가능하나, 메모리 낭비가 줄어든다는 특징을 제시함
- (중요) 스레드의 종류를 사용자 레벨, 커널 레벨, 멀티 레벨로 구분함
- 스레드의 종류에 따라 각각 다른 방식으로 동작함

2-2. 프로세스 스케줄링의 원칙
- 프로세스 스케줄링의 중요성과 목적을 설명함
- 프로세스 스케줄링 시, 스케줄링의 우선순위와 대기시간에 대해 설명함
- 스케줄링의 종류를 비선점형, 선점형으로 나누고 각각의 특징을 설명함
- (중요) 각 스케줄링 방식이 프로세스의 성능에 미치는 영향을 구체적인 예시로 설명함

2-3. 각 스케줄링 방식의 상세 설명
- 비선점형 스케줄링 방식의 특징과 이를 사용하는 이유를 설명함
- 선점형 스케줄링 방식의 특징과 이를 사용하는 이유를 설명함
- (중요) 각 스케줄링 방식의 실행 시간과 대기 시간에 대한 공식을 제공함
- 각 스케줄링 방식에 따른 우선순위 계산 방법을 상세히 설명함

3. 프로세스 우선순위와 상호 배제 이해

3-1. 프로세스의 우선순위 결정과 스케줄링
- 프로세스의 우선순위는 작업 성공 시간에 따라 결정됨
- (중요) 작업 시간이 짧은 프로세스가 우선순위에 있어 가장 높음
- 선점형 스케줄링은 작업이 끝난 후에 다음 프로세스들의 우선순위를 판단
- (중요) 이 방식은 작업이 도중에 멈출 수 있어, 한 프로세스가 완료된 후에 그 다음 프로세스들에 대한 우선순위를 판단

3-2. 선점형 스케줄링의 계산 방식
- 선점형 스케줄링은 라운드 로빈 알고리즘을 사용하여 계산
- (중요) 각 프로세스의 대기 시간은 그 프로세스가 준비되고 도착한 시간의 차이에서 계산
- 하나의 프로세스가 준비되는 시간과 다른 프로세스가 도착하는 시간의 차이에서 계산
- 계산 결과로 전체 평균 실행 시간과 평균 대기 시간을 얻을 수 있음

3-3. 프로세스의 상호 배제와 바쁜 대기 현상
- 프로세스는 공유하는 자원이 들어있는 임계 구역에서만 작업 가능
- 임계 구역 외에서 다른 프로세스가 공간을 차지하는 것을 상호 배제라고 함
- (중요) 바쁜 대기 현상은 임계 구역을 기다리는 프로세스들이 증가하여 시스템 성능이 저하되는 현상을 의미
- 세마포어 알고리즘은 이러한 바쁜 대기 현상을 방지하고자 개발된 알고리즘

00:01
두 번째 섹션 프로세스 같이 한번 공부해보겠습니다. 프로세스는 출제 비중이 굉장히 높습니다. 그렇게 어렵지도 않고요. 차근차근 공부하시면 높은 점수를 얻으실 수 있으실 거예요. 보도록 하죠. 첫 번째 프로세스입니다. 프로세스의 개념 메모리에 적재되어 실행되고 있는 프로그램을 프로세스라고 이야기할 수 있고요. 각 프로세스의 cpu가 할당돼서 수행이 되고 프로세스 정보는 pcb라는 거에 기록된다고 되어 있습니다. 그리고 프로세스는 다양한 상태의 값을 가진다고 되어 있죠. 요게 핵심이에요. pcb가 뭔지는 아래쪽에 나와 있습니다. 프로세스 컨트롤 블록이라고 합니다. pcb라는게 다른 용어도 있어요. 일단 프로세싱에 대한 정보를 기억하는 테이블이다. 정도 알고 있으면 될 것 같고요. 각 프로세스마다. 고유의 pcb가 생성된다라고 알고 있으면 되겠고 타임 슬라이스에 의해서 문맥 교환을 수행한다고 되어 있습니다. 문맥주 한 아래쪽에 적혀 있죠.

01:00
실행되는 프로 상태 정보가 저장된 후 다른 프로세스 정보를 pcb에 적재하는 과정이라고 되어 있어요. 이건 쉽게 작업 내용을 서로 바꾼다는 뜻이에요. 현재 작업하고 있던 프로세스 내용을 별도로 저장해 놓고 다른 프로세스의 작업 내역을 옮겨 오는 겁니다. 그래서 말 그대로 그냥 교환을 하는 거예요. 그냥 그렇게 알고 계시면 되고 아래쪽에 타임 슬라이스가 큰 경우와 작은 경우에 대한 차이가 나와 있죠. 타임 슬라이스가 작은 경우에는 문맥 교환수와 인터럽트 횟수와 오버헤드가 다. 일제히 증가를 합니다. 타임 슬라이스가 뭐였어요. 작업을 진행하는 단위잖아요. 예를 들어 타임슬라이스가 5초다. 그러면 5초마다. 이루어지는 거고 타임 슬라이스가 10초다. 그러면 10초마다. 이런 것들이 이루어지겠죠. 그러니까? 당연히 타임슬라이스가 큰 경우에는 작업이 그만큼 덜 쪼개지기 때문에 이런 것들이 감소된다. 이렇게 알고 계시면 되겠습니다. 다음은 프로세스 상태입니다.

02:01
프로세스는 생성 준비 실행 대기 종류 상태로 나뉘는데 특별하게 어려운 개념은 없죠. 생선과 종류는 어려운게 아니니까? 준비를 먼저 보면 cpu의 할당을 기다리는 상태라고 되어 있고 실행은 cpu를 할당받아서 작업이 진행되고 있는 상태구요. 대기는 입출력 처리 같은 것들을 위해서 잠시 멈춰 있는 상태 이렇게 보시면 되겠습니다. 자 그러면이 상태가 어떻게 바뀌는지 그 전이 과정에 대해서도 알 수 있어야 되는데 디스패치 타임 런아웃 블록 웨이크업 과정을 통해서 이러한 상태들이 상호 변경이 된다라고 되어 있는 겁니다. 자 그리고 아래쪽에 제가 그림을 그려 놨는데이 그림을 파악하고 계셔야 돼요. 실제 시험 공부하실 때 자 일단은 프로세스가 생성이 됩니다. 그러면 일단 준비 상태가 돼요. 그러면이 준비 상태에서 디스패치를 통해서 cpu를 할당받는 거예요. 사실

03:00
할당이라는 개념이 디스패치죠. 그래서 준비되어 있는 프로세스의 cpu를 디스패치 할당해서 실행 상태로 바꾼다고 생각하시면 됩니다. 자 그리고 타임 러낫 요게 여러분들은 책에 보시면은 다음 페이지에 여기 설명이 나와 있죠. 이걸 같이 보시면 돼요. 자 어쨌든 실행 중에 있는 프로세스는 두 가지로 바뀔 수가 있는데 일단 타이머 런아웃을 먼저 볼게요. 용어 자체에서도 알 수 있듯이 할당된 시간 안에 작업을 끝내지 못하면 일단은 다시 준비 상태로 돌아옵니다. 자 그것과 실행 도중에 사용자의 입력을 받아서 무언가 처리를 해야 되는 상황이 올 수 있죠. 그럴 때는 블록 과정을 거쳐서 대기 상태로 전환이 됩니다. 자 그런 다음 대기 상태에 있던 프로세스는 사용자 입력이 끝나면 이제 준비가 된 거니까? 다시 깨워서 준비 상태로 돌아옵니다. 바로 실행 상태로 가지 않는 이유는 프로세스가 이거 하나만 있는게 아니기

04:01
때문에 해당 프로세스 예를 들면 a라는 프로세스가 있다고 생각을 해 볼게요. a라는 프로세스가 대기 상태로 들어갔어요. 그러면이 대기하는 동안 cpu가 멈춰 있는게 아니라 다른 b나 c에 해당하는 프로세스의 할당이 돼서 다른 일을 하고 있어요. 그렇기 때문에 a라는 프로세스는 바로 실행을 할 수가 없고 다시 나 다시 할 수 있어요라고 준비 상태로 들어가는 겁니다. 그러면 cpu가 다른 거 처리하다가 여기서도 대기 상태가 발생되겠죠. 아니면 끝나든지 그러면 다시 a로 와서 디스패치 된 다음에 실행이 되는 이런 상태로 진행이 된다고 생각하시면 돼요. 이해되시죠. 이렇게 돌아가는 프로세스가 존재한다. 이렇게 보시면 되겠습니다. 넘어갈게요. 다음은 인터럽트 인터럽트가 앞에서도 잠깐 잠깐 이야기 언급이 됐었었죠. 인터럽트는 수행중인 프로세스가 특정 요인에 의해서 잠깐 멈췄다가이

05:00
요인을 해결하고 다시 복귀하는게 포인트입니다. 예를 들면 우리가 밥을 먹다가 물을 약간 쏟았다고 생각을 해보세요. 그러면 밥 먹는 걸 잠깐 멈추고 물을 닦잖아요. 그리고 나서 밥을 그만 먹나요. 다시 밥을 먹죠. 그 얘기에요. 하나님을 잠깐 멈추고 별도 발생된 일을 처리한 다음에 다시 복귀하는 거 이걸 인터럽트라고 표현합니다. 인터럽트는 외부와 내부 소프트웨어 인터럽터 이렇게 3가지로 구분이 되는데 외부는 말 그대로 외부적인 요인이에요. 쉽게 말해서 컴퓨터에 충격을 가하는 거죠. 입출력 장치에 문제가 생기거나 타이밍 전원 이상 뭐 예를 들어 기계 차고 컴퓨터를 발로 차고 이런 것들 있죠. 이런 것들에 대해서 외부적 요인에 의해 발생하는 인터럽트 외부 인터럽트라고 하고요. 내부 인터럽트는 트랩이라고도 표현하는데 잘못된 명령이나 데이터를 사용할 때 잘못된 명령이라는 거는 프로그램 버그 같은 걸 이야기하는 거예요. 그리고 데이터는 뭐 숫자가 들어가야 되는데

06:00
문자가 들어간다든지 뭐 이런 것들이 있죠. 이런 것들 때문에 발생하는 인터럽트가 내부 인터럽트 자 그리고 소프트웨어 인터럽트는 요청에 의해 발생한다고 써 있죠. 요청에 의해 발생한다는 것은 뭐 프로그램을 강제로 종료한다든지 이런 것들이죠. 이런 것들이 요청에 의해 발생하는 인터럽트다라고 생각하시면 되겠습니다. 아래쪽에 인터넷 처리 절차가 자세하게 나와 있는데 제가 체크한 부분만 보시면 될 거예요. 인터럽트가 발생하면 일단은 하고 있는 연산까지는 마무리를 해요. 프로세스가 마무리가 되는게 아니에요. 프로세스 내부에 있는 부분 부분에 연산 중에 하고 있는 연산까지는 마무리를 하고요. 일시 중단합니다. 그리고 PCB PC pc라는 거는 이제 프로세스 통신 프로세스 컨트롤 뭐 이런 뜻이에요. PCB 앞에서 나왔었죠. 이런 것들을 이용해서 일단 정보 저장을 해요. 그리고 문맥 교환을 통해서 요거는 옮기고 다시

07:00
처리 루틴을 집어넣는 이런 문맥 교환을 통해서 CPU 할당을 전환하고 인터럽트를 처리해요. 그 다음에 처리가 끝나면 프로세스 상태를 다시 집어넣어서 복구한 다음에 다시 수행하는 이런 형태로 진행이 된다라는 거죠. 결국 길게 얘기했지만 인터럽트 발생되면 잠깐 멈춰서 프로세스 따로 보관해 놓고 인터넷도 처리한 다음에 다시 꺼내와서 수행한다. 뭐 이렇게 보시면 되겠습니다. 다음으로 프로세스 통신 ipc라고 되어 있죠. 직접적인 통신 방법이 없는 프로세스들이 통신을 하기 위해 사용하는 기법을 ipc라고 이야기하는데 대표적으로 공유 메모리 메시지 전달 기법이 있다고 되어 있습니다. 공유 메모리는 메모리 영역을 통해서 데이터를 교환한다라고 되어 있고 메시지 전달은 말 그대로 메시지를 전달하는데 이게 운영체제가 해주는 거예요. 그래서 빠르지만 불안정한 걸 선택할 건지 아니면 느리지만 안정적인 기법을 선택할 건지 이런 특징을 구분할 수

08:01
있어야겠죠. 다음 쓰레기입니다. 스레드는 프로세스 내에서 실행되는 흐름의 단위로 경량 프로세스라고 한다고도 되어 있습니다. 경량이라니까? 좀 가벼운 좀 이렇게 양이 적은 뭐 이런 느낌이라고 보시면 되겠죠. 일반적으로 하나의 프로세스는 단일세이드를 가지는데 둘 이상의 스레드를 동시에 수행하는 다중 방식도 있다. 이렇게 알고 계시면 되고요. 각각의 스레드는 서로 독립적으로 다중 수행이 가능하다라고 되어 있습니다. 이런 수리들을 사용하는 이유가 있겠죠. 병행성 증진이 가능하고요. 처리율을 향상시킬 수 있고요. 그 다음에 메모리 낭비가 줄어든다고 되어 있죠이 정도까지 스레드의 특징이 나와 있습니다. 다음은 3d의 종류죠. 스르르의 종류는 사용자 레벨과 커널 레벨이라고 되어 있어요. 사용자 레벨은 빠르지만 구현이 어려운 그리고 커널 레벨은 느리지만 구현이 쉽다고 되어 있습니다이 두 개의 서로 차이가 있는데이 차이를 서로 보완한게

09:01
멀티 레벨 술에 대해서 멀티 레벨 빠르게 수행되어야 하는 스레드는 사용자 레벨로 작동을 하고 안정성이 필요한 스레드는 커널 레벨로 작동한다. 이렇게 보시면 되겠습니다. 그러니까? 세 가지가 있는 거죠. 사용자 커널 멀티 레벨 이렇게 보시면 되겠습니다. 넘어가서 이번에는 프로세스 스케줄링 방금 이야기했듯이 프로세스 또는 이제 스레드 이런 것들이 한 가지가 아니라 여러 개가 있을 수 있어요. 그러면이 cpu가 어떤 프로세스를 건드리고 있을지에 대한 스케줄링을 해야 된다는 뜻이에요. 아무거나 하면 안 되니까요이 스케줄링은 우선순위를 부여하고 관리하는 걸 이야기하는데 대상에 따라서 장기중기 단기가 있다고 되어 있습니다. 각각 어떤 키워드가 포함되는지 판단을 해주시면 되고요. 프로세스의 종류는 굉장히 다양한데 보통 강제 중단을 할 수 있는지 없는지 여부에

10:00
따라서 비선정과 선점형으로 나뉜다. 되어 있습니다. 비선재명은 이런 것들이 있고요. 현재형에는 이런 것들이 있다고 되어 있습니다. 각각 하나씩 살펴보도록 할 거예요. 다음으로 프로세스 스케줄링 원칙 나와 있는데 일단 우선순위 효율적 처리 능력 이런 것들을 높일 수 있게끔 스케줄링을 해야 된다고 되어 있는데 특별하게 어려운 개념은 아니죠. 여기서 포인트는 우선순위에요. 이렇게 보시면 되겠습니다. 넘어가서 비선점형 스케줄링 종류부터 하나씩 보도록 할게요. 조금 여기서부터는 조금 어렵습니다. 천천히 보시면 충분히 할 수 있어요. 일단 fifo입니다. 입력된 순서대로 처리하는 거예요. 가장 간단한 방법입니다. 평균 반환 시간이 좀 길다라는 특징이 있고요. 평균 반환 시간 실행 시간 대기시간 공식 나와 있죠이 정도 가볍게 보시면 충분히 할 수 있어요. 총 실행 시간에서 총 프로세스 개수를 나누면 평균 실행 시간이에요. 어려운 개념

11:01
아니잖아요. 그래서이 실행 시간과대 공간을 합하면 반환 시간인데 이거 우리가 운영체제 공부할 때 이야기했던 거죠. 턴 어라운드에서 요거까지 보시면 되겠습니다. 그리고 이제 대기 시간이라는 개념이 여기에 있는데 앞선 프로세스들의 실행 시간 함께 그리고 도착 시간 내 도착 시간이죠. 내 도착 시간을 빼면 된다는 건데 간단한 거예요. 밑에 표를 한번 볼게요. 자 프로세스가 이렇게 abc가 있는데 각각 a를 완료하려면 이만큼 b를 c를 완료하려면 이만큼 걸린다는 소리고요. 실제로 얘네들이 도착한게 동시에 도착한게 아니라 얘는 0초에 얘는 1초에 얘는 2초에 도착했다는 뜻이에요. 자 그러면 a를 먼저 볼게요. a가 먼저 도착했으니까? 도착한 순서대로 처리를 해야 되니까? 얘가 먼저 진행이 되겠죠. 얘는 기다리는 시간 없이 바로 진행을 할 거예요. 그리고 24초가 걸리겠죠. 자 그러면 b는 24초 뒤에 작업을 할 수 있는 건데 얘가

12:02
a보다. 1초 늦게 들어갔죠. 그렇기 때문에 24초에서 1초를 빼서 얘는 지금 23초를 기다린 거예요. 어려운 개념이 아니죠. 자 그럼이 상태입니다이 상태에서 또 보는 거죠. c는 2초에 들어왔어요. 2000에 들어왔는데 실제 실행 시간에 3이에요. 자 그러면 얘는 a와 b를 다. 처리한 다음에 진행이 되는 거니까? a와 b의 실행 시간 30초를 기다리는게 맞아요. 자 그런데 동시에 도착한게 아니기 때문에 늦게 도착한만큼 빼주는 거죠. 그래서 대기시간이 28초다. 이렇게 되어 있는 겁니다. 이해되시죠. 이렇게 보시고 나머지는 뭐 공식에 따라서 계산이 되는 거니까? 개념 정도만 파악을 하시면은 그렇게 어려운 개념이 아니다. 그런 얘기입니다. 넘어가서 이번에는 sjf에요. 용어만 봐도 대충 감이 와요. 숏 퍼스트라고 되어 있어요. 실행 시간이 가장 짧은 프로세스 순으로 처리한다고 되어 있습니다.

13:00
그러니까? 당연히 실행 시간이 길 경우에는 무한대기 기하 상태라고 이야기하는데요. 무한 대기 상태가 발생할 수 있겠죠이 부분이 핵심이고요. 한번 보죠. 일단 프로세스 위랑 똑같습니다. 24초 6초 3초가 걸리고 도착 시간도 아까랑 똑같아요. 자 그런데 대기 시간이 어떻게 되는지 한번 보죠. 일단 얘가 먼저 들어왔기 때문에 일단 얘가 먼저 수행되는게 일단은 맞습니다. 자 그러면 24초 뒤에 a는 끝나겠죠. 자 그러면 24초 뒤에 이게 끝나고 봤더니 b와 c가 도착해 있는 거예요. 물론 b가 먼저 도착했지만 작업시간 실행 시간은 얘가 더 짧죠. 그러니까? 얘를 먼저 합니다. 그래서 계산이 얘가 먼저 되는 거예요. 그리고 나서 b가 남죠. 그렇기 때문에 여기서는 24와 3을 더한 27 그리고 도착 시간을 뺀 상태가 대기 시간이 되는 겁니다. 어떤 느낌인지 아시겠죠. 그래서 맨 처음 봤던 건 fifo는 도착 시간 기준으로 진행이 되는 거고

14:01
sjf는 실행 시간을 기준으로 순서가 정해진다. 이렇게 보시면 되겠네요. 세 번째로 hr인입니다. hrn은 fifo와 sjf의 단점을 보완했다고 되어 있죠. 대기 시간이 긴 프로세스의 우선순위를 높였다. 대기시간이 길어질수록 우선순위가 높아진다고 생각하시면 됩니다. 아래쪽에 공식을 보시면 대기 시간과 실행 시간에 합 나누기 실행 시간이라고 되어 있죠. 그러니까? 대기 시간이 길어질수록 분모보다. 분자가 커지게 되기 때문에 우선순위 값이 점점 올라가는 겁니다. 보통이 hrn 같은 경우에는 실행 시간과 도착 시간 이런게 나오는게 아니라 실행 시간과 대기시간 뭐이 정도까지 주어지고 우선순위를 계산해서 가장 먼저 수행되는 프로세스를 구하는 형식의 문제가 나옵니다. 아래쪽처럼 나오는 거죠. 실행 시간과 대기 시간을 준 다음에 우선순위를 안 줘요. 안주고 가장 먼저 수행되는 뭐 이런

15:00
것들을 물어본다고 생각하시면 됩니다. 계산은 어렵지 않죠. 실행 시간과 대기 시간을 더해요. 그런 다음 실행 시간을 한번 더 적어주면 됩니다. 더하고 한 번 더 적어 주는 거예요. 더하고 한 번 더 적어줍니다. 이런 식이에요. 그래서 20 + 10 해서 30 적는 거고요. 여기는 24가 되겠죠. 여기는 6하고 10억을 더해서 16이에요. 이런 식으로 6분의 16/4 또는 30 나누기 20 이렇게 해서 우선순위가 나온다는 겁니다. 자 그래서이 여기서는 프로세스 B 같은 경우에 실행 시간은 4초지만 초라고 할게요. 대기 시간은 20초 가장 많이 기다렸죠. 그렇기 때문에요. 대기 시간에 의해서 우선순위가 굉장히 높아집니다. 요걸 가장 먼저 수행을 하게 되겠죠. 이렇게 보시면 되겠습니다. 이 정도 보고 넘어가도록 할게요. 다음은 선점형 스케줄링이에요. 지금까지는 작업을 끝낸 다음에 그 다음

16:00
프로세스들에 대한 우선순위를 판단했다고 하면 선점형은 타임 슬라이스 단위로 계속 계속 쪼개서 판단할 수 있어요. 그래서 도중에 멈추고 이렇게 할 수가 있습니다. 그러니까? 당연히 더 어렵겠죠. 한번 보겠습니다. 처음에 rr 라운드 로빈 나와 있습니다. 동일한 타임 슬라이스를 사용하는 시그널 처리 시스템에 적용을 한다고 되어 있어요. 계산 방식은 fifo와 동일한데 프로세스가 끝나는 기준이 아니라 타임 슬라이스 단위로 작업을 진행한다는 거고요. 당연히 타임슬라이스가 실행 시간보다. 커버리면 쪼개질 않기 때문에 fifo와 동일한 결과를 보이게 되겠죠. 아래쪽에 예를 한번 볼게요. 5초에 타임슬라이스 실제로는 훨씬 짧아요. 5초에 타임슬라이스를 가진 프로세스를 라운드 로빈 스케줄링 하는 걸 같이 한번 보겠습니다. 자 작업 프로세스가 abcd가 있고요. 시간이 남은 시간이라고 표현했는데 실행 시간과 같은 개념이라고 보시면

17:00
돼요. 남은 시간은 실행 시간이 어느 정도 지난 시간이라고 보시면 되죠. 여기 10초 18초 5초 3초 남아 있고요. 실행 시간이 도착 시간은 0초 2초 5초 6초에 도착을 했어요이 상태에서 천천히 보겠습니다이 부분 조금 헷갈려요. 타임 슬라이스 간격으로 5초죠. 전체 프로세스를 차례로 순해 무슨 얘기냐면 여기서 5초 여기서 5초 여기서 5초 여기서 5초 이렇게 쓰겠다는 뜻이에요. 자 그러면 남은 시간에서 5초씩 빼주면 되죠. 자 그러면 여기가 10 - 5니까? 5가 된 거고 18 - 5니까? 13 그리고 5 - 5니까? 0이고요. 그 다음에 3 - 5니까? 0이죠. 요렇게 5초씩 타임 슬라이스 간격으로 빠져서 작업을 할 수 있다는 뜻이에요. 자 그런데 여기서 중요한 거는 실제 대기 시간이 어떻게 되냐라는 거죠. 얘 같은 경우에는 바로 수행을 했죠. 문제가 안 되고요. 얘 같은 경우에는

18:00
a 작업을 하고 넘어온 거기 때문에 5초가 대기 시간이에요. 그런데 2초 늦게 도착했죠. 그렇기 때문에 빼주는 거죠. 그래서 3초 대기를 한 겁니다. 이해되시죠. 그리고 얘 같은 경우 a와 b를 거쳐서 오기 때문에 얘는 5 곱하기 2죠. 그렇기 때문에 10초가 걸리는 건데 5초 늦게 도착했죠. 그래서 여기 예시로 적어 놨죠. 10초 뒤에 수행이 되지만 5초 방금 늦게 도착했기 때문에 실제 대기 시간은 5초일거다라는 거고요. 얘 같은 경우 이거 이거 수행한 다음이니까? 15초예요. 15초 뒤에 수행이 되는 건데 얘가 6초 늦게 왔습니다. 그래서 9초가 실제 대기 시간이 된다는 거죠. 이해되시죠. 이렇게 하고 이런 형식으로 쭉 진행을 하는 겁니다. 여기서 c와 d는 이미 마무리가 됐죠. 그러니까? 남은 애들을 수행을 하게 되겠죠. 그러면 여기서 a는 한 번 하면 끝내고요.

19:00
B 같은 경우에는 한번 하면은 8초가 남을 거고요. 다시 하면 3초가 남을 거고 다시 또 하면은 이제 끝나는 그런 형태가 되겠죠. 자 그러면이 마지막 B 같은 경우에는 총 18초에 대기 시간을 가져요. 자 어떻게 18초냐면 위쪽에서 좀 봐야겠죠. 여기서 이거 작업할 때 기다려야 되죠. 그리고 본인 작업을 했어요. 그리고 요거 작업할 때 기다립니다. 그리고 이거 작업하는 걸 기다려요. 그리고 나서 다시 e 작업을 하죠. 그리고서 다시 자기한테 처리가 돌아오는 거잖아요. 그리고 나서 나머지 작업이 없으니까? 자기만 계속 작업을 진행을 하게 되는 건데 그럼 여기서 5초 여기서 5초 얘는 3초죠. 그리고 여기서 5초가 걸렸어요. 그렇기 때문에 총 다. 더하면 18초 대기 시간이 된다는 겁니다. 좀 복잡하죠. 이런 식으로 계산이 된다라는 개념을 잡아 가셔야 된다는 겁니다. 그래서 정리를 해보면 각 작업에 평균 실행 시간은 abcd 나누기 4해서 9구요.

20:01
평균 대기 시간은 abcd 계산해 보면은 10.75가 된다는 거고요이 실행 시간과 대기 시간을 다. 더하면 평균 반환 시간이 되겠죠. 이렇게 19.75초가 평균 반환 시간이 됩니다라고 써 있는 거예요. 이렇게 계산을 할 수가 있다라는 거죠. 다음 넘어갈게요. 이렇게 모든게 다. 어려운 건 아니니까요. 실제로는 좀 간단한 것들도 많습니다. srt는 작업이 끝나지 않은 프로세스의 남아있는 실행 시간이 가장 작은 프로세스를 먼저 실행한다고 되어 있죠. sjf 기법을 선점 형태로 변경을 한 거라고 되어 있어요. 남아있는 실행 시간이 가장 작은 이렇게 보시면 될 것 같고 그 다음에 마지막으로 mfq가 있습니다. 멀티 레벨 피드백 큐라고 되어 있죠. 짧은 작업이나 입출력 위주의 프로세스의 우선순위를 부여하기 위해서 개발된 방식이다라고 되어 있습니다.

21:00
우선순위가 있는 각 대기 리스트가 있으면서 각 대기 리스트마다. 타임슬라이스가 존재한다라고 되어 있어요. 낮은 q일수록 타임 슬라이스는 커지고 CPU 사용을 마친 프로세스는 낮은 키로 이동된다라고 되어 있죠. 여러가지 복잡한 설명이 있는데 결국에 요것만 보시면은 문제 푸는데 크게 무리가 없을 겁니다. 요정도 보시면 될 것 같고요. 다음으로는 프로세스 관련 기술이에요. 첫 번째로 상호 배제에 대해서 같이 좀 보겠습니다. 임기 구역에 대해서 먼저 좀 봐야 되는데 임기의 구역이라는 거는 프로세스가 서로 공유하는 자원이 들어있는 영역이라고 보시면 됩니다. 자문을 공유하는 프로세스는 동시 사용이 불가능하며 이게 무슨 얘기냐면 a 프로세스와 b 프로세스가 있는데 얘네들이이 공간을 같이 공유를 하고 있어요. 그러면이 공간을 둘이서 같이 쓸 수 없다는 뜻이에요. 그래서 배타적이라고 써 있는 거고요. 독점도 불가능하다. 얘만 계속 쓸 수 없다는 뜻이죠.

22:00
서로 공유를 같이 사이좋게 써야 된다. 이렇게 보시면 되겠습니다. 자 그래서 이렇게 서로 배타적이어야 된다라고 써 있는게 이제 상호 배제라는 개념이 나오는 건데요. 단 하나의 프로세스만 임계 구역의 접근할 수 있도록 다른 프로세스에 접근을 차단하는 거 이걸 상호 배제라고 합니다. 상호 배제를 위해서는 아래 4가지 요구조건이 충족되어야 한다고 되어 있죠. 4가지가 다. 충족되어야 돼요. 암기 하셔야겠죠. 이렇게 이제 보시면 되고 다음에 상호 배제 알고리즘 상호 배제를 하는 방법이라고 보시면 되겠죠. 잠금과 인터럽트 봉쇄 엄격한 교대가 있다고 되어 있는데이 부분은 아래쪽을 읽어 보시면은 설명 자체가 어려운 건 없고요. 항목만 암기를 해주시면 괜찮을 것 같습니다. 다음으로 현재 사용중인 프로세스의 실행 시간이 길다면 다른 프로세스는 임계 구역을 사용하기 위해서 계속해서 기다리게 되는데 이걸 바쁜 대기

23:00
현상이라고 한다고 되어 있어요. 바빠 죽겠는데 계속 기다린다는 얘기죠. 바쁜 대기현상이 증가하면 운영체제는 부담을 갖게 돼서 컴퓨터 시스템의 전체 성능이 떨어지게 되는데 그래서이 현상을 제거하기 위해서 세마포 알고리즘이라는 걸 사용해야 된다고 되어 있어요. 그러면 세마포머 알고리즘이 뭔지를 봐야겠죠. 네 번째 세럼포어 임기 구역을 지키기 위한 기존 상호 배제 알고리즘이 바쁜 대기 현상을 야기하기 때문에 이걸 방지하고자 개발된 알고리즘이라고 되어 있습니다. 잠시 재우는 피 연산과 나중에 깨워주는 부위 연산 방식을 사용한다고 되어 있죠. 자 그런데 p 연산 말고 슬립이라든지 웨잇이라는 단어가 나올 수 있습니다. 웨이크업이랑 시그널 V 연산 대신에 나올 수 있는 용어들이기 때문에 다. 체크를 해 주셔야 되고요이 세마포를 나타내는 코드가 있다고 하면 이게 c언어는 아닌데이 코드에는 항상 s가 나와요. 그래서 p와 vs 또는 이제

24:01
웨잇 시그널 S 뭐 이런 식으로 나온다고 생각하시면 되고 이런 종류의 코드가 보인다라고 하면 세미포어를 선택해 주시면 됩니다. 아래쪽에 코드가 좀 복잡해 보이는데 이게 c언어라든지 그런 식으로 분석을 해야 되는 부분이 아니기 때문에 간단하게 화장실이라고 생각을 해보세요. s가 화장실 칸이에요. 자 그래서 프로세스가 아니라 화장실로 생각해보면 화장실에 들어갔어요. 그러면 남은 화장실 간을 하나 지우는 거고요. 화장실을 나오게 되면 남은 화장실 칸 하나를 늘리는 거예요. 그렇게 생각하시면 조금 간단합니다. 그래서 현재 총 예를 들어서 화장실이 3칸이 있는데 프로세스가 3개가 진입이 됐다. 그러면 비어있는 칸이 없는 거죠. 그렇게 되면은 이제 더 이상 기다리지 않는 거고요. 거기서 한 명이 나오게 되면은 비어 있는 화장실이 하나 생긴 거기 때문에 거기에 다시 들어가고 이런 식의 접근이라고 보시면 되겠습니다이 정도로만 생각하셔도 충분히 맞추실 수 있어요. 자이 정도 보고 넘어가도록 할게요.

25:00
다음은 교착상태에요. 교착상태는 같은 자원의 할당을 요구하면서 두 개 이상의 프로세스가 무한정 기다리고 있는 상태를 말합니다. 교착상태가 발생하기 위한 필요충분조건은 아래와 같다라고 되어 있죠요. 4가지 마찬가지 다. 필요하다는 겁니다. 상호 배제 점유화 되기 비선점 환영되기 나와 있는데 설명이 그렇게 어렵지 않으니까? 이해만 하시고 항목을 기준으로 암기하시면 되겠습니다. 자 중요한 건 교착상태를 해결하기 위한 방안이죠. 아래쪽에 예방 회피 발견 회복 4가지가 있는데 하나씩 보도록 하죠. 예방 같은 경우에는 교착상태에 필요충분조건 중 하나 이상을 부정해서 예방하는 거라고 되어 있습니다. 상호 배제를 부정한다든지 비선점 점유와 대기 환영되기 이런 것들 중에 하나를 부정한다. 이렇게 생각을 하시면 돼요. 부정하는 방법에 대해서 문제가 보이지는 않고요. 이게 어떤 개념을 가지고 있는지 이런게

26:01
문제가 나온다고 보시면 돼요. 다음으로는 세 번째 회피입니다. 회피는 안정적 상태를 유지할 수 있는 프로세스만 받아들이는 거예요. 교착상태 발생 가능성을 애초에 회피하는 대표적으로 은행원 알고리즘이라고 되어 있는데 은행은 알고리즘은 쉽게 대출 같은 거 생각하시면 됩니다. 대출을 모두 해주지 않고 가능한 대출을 상환할 수 있는 돈을 갚을 수 있는 사람한테만 대출을 해주죠. 아예 이런 것들을 이제 회피 개념이라고 보시면 돼요. 다음은 발견입니다. 컴퓨터의 중대한 원인이 교착상태인지 다른 이유인지 발견하는 파악하는 방법이라고 되어 있습니다. 다음은 회복이에요. 교착상태가 발생한 프로세스들 중에 중단할 프로세스를 정해서 자원을 빼앗아 버리는 그러니까? 강제로 종료시켜 버리는 요런 방식인데요이 중단을 프로세스를 희생양이라고 표현을 했는데 희생양을 정하는 기준은 이렇게

27:00
있습니다. 우선순위가 낮거나 진행률이 적거나 자원을 적게 사용하거나 아니면 기아 상태 등으로 수행이 불가능하거나 이런 것들을 없애서 회복을 시키는 교착상태를 해제를 시키는 이런 방법이 있다. 여기까지 보도록 하겠습니다.

728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/8c5N08bzyos?si=UqYVObuWyLFZPxPr

1. 운영체제의 구조

1-1. 명령어 실행 과정
- 사용자로부터 전달받은 명령어를 CPU에 입력해 처리함
- 명령어는 이진수 형태로 전달되며, CPU의 제어 상태에 따라 수행됨
- 메모리에 기억된 명령어가 처리되는 주기적인 단계인 메이저 스테이트가 반복됨
- 명령어는 패치, 인출, 간접 실행, 인터럽트 등 여러 단계를 거쳐 실행됨
- 명령어는 부여된 비츠 수에 따라 명령어 개수가 결정됨

1-2. 명령어 구성과 주소 지정 방식
- 명령어는 오피 코드(연산자)와 오퍼 랜드(연산 대상)으로 구성됨
- 0, 1, 2, 3, 4 등의 명령어 형식은 오퍼 랜드의 개수에 따라 결정됨
- 0은 0, 1은 1, 2는 2, 3은 3, 4는 4를 의미함
- 명령어 주소 지정 방식은 참조 횟수가 많을수록 느리고, 적을수록 빠름
- (중요) 직접 주소 지정은 메모리 참조 횟수가 1이지만, 메모리 확장 및 변경의 어려움이 있음
- 간접 주소 지정은 연산 대상의 주소 값이 저장된 곳의 주소 값을 찾아가는 방식임
- 계산에 의한 주소 지정은 저장된 주소가 특정 값을 계산하여 해당 위치에 저장하는 방식임
- 레지스터는 CPU의 연산에 필요한 데이터나 상태를 일시적으로 저장하는 장치임
- 레지스터는 제어 장치와 연산 장치에 의해 사용되며, 메모리 주소를 기억하고 있음

1-3. 레지스터의 역할과 구성
- 레지스터는 메모리 주소를 저장하고, 버퍼 레지스터를 통해 데이터를 잠시 머무름
- 프로그램 카운터는 실행할 명령어의 주소를 가리킴
- 제어 장치는 장치들의 동작이나 연산을 제어하는 장치임
- 레지스터는 CPU의 연산에 필요한 다양한 값을 저장하며, 메모리 중 가격대비 용량이 가장 작고 속도가 빠름
- 레지스터는 제어 장치와 연산 장치로 구성되며, 레지스터의 회로와 레지스터의 레지스터로 나뉨

2. 소프트웨어의 구성 요소와 운영체제의 이해

2-1. 소프트웨어의 구성 요소 이해
- 소프트웨어의 구성 요소에는 제어장치, 메모리, 보조장치 등이 있음
- 제어장치는 인덱스와 주소를 관리하는 장치로, 주소는 기억장치를 사용하여 관리
- (중요) 메모리는 프로그램이 실행되는 동안 필요한 데이터를 저장하고, 보조장치는 보조 데이터를 저장
- 인덱스 레지스터는 주소 변경을 위한 레지스터로 주소를 관리
- 메모리 레지스터는 정보 저장과 사용을 위해 사용되며, 인덱스 레지스터는 주소 변경에 관여

2-2. 운영체제의 이해와 특징
- 운영체제는 제어 프로그램과 처리 프로그램으로 나뉨
- (중요) 운영체제의 주요 역할은 프로세스간의 원활한 커널 기능 지원
- 프로세스 실행 시간, 대기 시간 등의 시간 관련 개념을 이해
- 프로세스가 운영체제로부터 할당받은 시간을 '타임 슬라이스'라는 단위로 관리
- 운영체제의 자원 관리 역할이 중요하며, 예로 들어 메모리, 파일 등을 관리

2-3. 운영체제의 종류와 특징
- 운영체제의 보편적인 형태로는 윈도우, 유닉스, 리눅스 등이 있음
- (중요) 윈도우는 핵심 기능이 포함된 플랫폼이며, 유닉스는 독립적인 커널을 포함하고 있음
- 리눅스는 기본적인 운영체제로, 전력 시스템에 필요한 기본적인 기능을 제공
- 각각의 운영체제는 각각의 특성에 맞게 사용되며, 환경에 따라 적절한 운영체제를 선택하여 사용

3. 유닉스와 리눅스의 특징과 권한 설정

3-1. 유닉스의 특징과 구성요소
- 유닉스는 C 언어 기반, 이치시스템, 이웃을 기반으로 함
- 프로세서나 엑셀 등의 기능을 내장하고, 이미지 및 차트를 불러올 수 있음
- 싱글 유저 시스템, 다수 사용자 동시 사용 가능, 계층적 파일 시스템과 다양한 네트워크 기능을 제공함
- 윈도우즈와 유사한 특징을 가짐

3-2. 유닉스의 파일 시스템과 권한 설정
- (중요) 유닉스의 파일 시스템은 대칭 구조로, 파일과 디렉토리의 권한을 변경하는 명령어를 제공함
- 권한은 소유자, 소유 그룹, 사용자에 따라 다르게 지정될 수 있음
- 파일의 권한을 10진수로 변환하고, 다시 2진수로 바꾸어 주어 특정 권한을 확인할 수 있음

3-3. 리눅스의 특징과 구성요소
- 리눅스는 유닉스 기반의 오픈 소스 시스템 소프트웨어로, 다양한 배포 버전이 존재함
- 마이크로 커널을 사용하며, 간단한 기능을 제공하고 확장이 가능함
- (중요) 파일 타입을 기록하고 소유자, 소유 그룹, 사용자에 대한 권한을 지정함
- 파일 권한 변경 명령어를 통해 권한을 지정하고, 10진수로 변환하여 확인 가능함

4. 유닉스 기초

4-1. 유닉스 환경 설정
- 환경 설정 명령어로 ' 설정'이라는 단어를 붙임
- 환경 설정 파일은 '에프로젝트' 경로에 저장됨
- 환경 설정 파일에서 사용되는 명령어는 '에프경로/에프로젝트/디렉토리/디렉토리/디렉토리/디렉토리'임
- (중요) 환경 설정 명령어 중 '에프경로/에프로젝트/디렉토리/디렉토리/디렉토리/디렉토리'에 저장된 명령어들을 순서대로 불러들임
- 명령어들을 불러들일 때는 '디렉토리/디렉토리/디렉토리' 순서대로 불러들임

4-2. 사용자와 그룹에 대한 권한
- 사용자와 그룹에 대한 권한을 설명하는 것이 '사용자 권한', '소유 그룹'에 대한 설명이 됨
- 사용자는 읽고 쓰기가 가능하고, 소유 그룹은 읽기만 가능함
- 소유 그룹의 경우, 그룹의 이름을 포함해 어떻게 해석할지 알아야 함
- (중요) 소유 그룹의 권한을 명확히 설명하는 것이 '사용자 권한'에 해당함
- 각 그룹의 권한을 명령어로 불러들일 때, 해당 그룹의 이름을 포함해 설명함

4-3. 리눅스 쉘 스크립트
- 리눅스 쉘 스크립트는 프로그래밍 언어이며, 명령어 조합으로 구성됨
- '리눅스 쉘 스크립트' 파일은 '에프로젝트' 경로에 저장되어 주기적으로 실행할 수 있음
- 환경 설정 변수를 포함한 여러 명령어를 포함함
- (중요) 환경 설정 명령어 중 '에프경로/에프로젝트/디렉토리/디렉토리/디렉토리/디렉토리'에 저장된 명령어들을 순서대로 불러들임
- 각 그룹의 권한을 명령어로 불러들일 때, 그룹의 이름을 포함해 설명함

00:00
4과목 마지막 장입니다. 운영체제에 대해서 같이 한번 공부해 볼 거에요. 운영체제에 대한 개요. 정도는 정말 간략한 이유는 앞에서 잠깐 언급을 했지만 하나의 챕터 정도 될 정도로 내용의 사실 많습니다. 하드웨어를 운영하는 거니까요. 그래서 실제로 하드웨어를 어떤 식으로 운용하는 지 먹이는 부분을 같이 좀 볼 거에요. 보겠습니다. 첫번째 섹션으로 는 운영체제 같이 보도록 하죠. 첫번째 포인트 명명 의 흐름입니다. 명령이 전달되는 과정 사용자가 전달할 명령 문자열을 별도의 번역을 통해서 피트 형태 이긴 수저 이진수 형태로 변환해서 전달하는 과정을 거친다. 라고 되어있구요. 전달받은 된 비트 형태의 명령은 순차적으로 수행 되고요. 천이 저장이 출력 등을 진행한다. 라고 되어있구요. 각각의 진행이 어디서 수행 되는지 안쪽에 나와 있습니다. 메모리 라는건 기억장치를 생각하시면 되요.

01:00
내려가서 cpu 에 제어 상태 라고 나와있습니다. 메모리에 기억되어 있는 명령어가 처리되는 싸이클 거 그걸 메이저 스테이트 라고 이야기 하는데요. 메이저 스테이트 가 인출 간접 실행 인터럽트 체육이 반복되는 형태에요. 자 그래서 요거 에 대한 영어 여기서 있죠. 이렇게 이렇게 이렇게 이해해 주시면 됩니다. 자 그래서 패치 인출은 말 그대로 명령어를 인출하는 단계 구요. 그 다음에 인 다이렉트가 간접 땅 기의 요. 피연산자의 위치를 파악하는 단계 그 다음에 실행 해서 팩 명령어를 실행하는 단계 고요. 그 다음에 인터럽트는 말 그대로 인터럽트를 발생시키는 단계의 요. 요. 단계가 계속 주기적으로 돌아간다. 이렇게 보시면 되겠습니다. 영어도 기억을 하셔야 되요. 다음으로는 명령어의 구성입니다. 명령어는 오피 코드 연산자와 오퍼 랜드 의 연산 대상으로 구성이 됩니다.

02:03
오피 코드는 부여된 비츠 수에 따라서 명령어 개수가 결정이 됩니다. 예를 들어서 3 미트 다. 라고 하면 이에 3 승인 거구요. 8개의 명령어 개수가 존재한다. 이렇게 볼 수가 있는 거죠. 다음 오퍼 랜드는 연산 대상의 요. 피연산자 라고도 하죠. 아예 없거나 다수 존재할 수 있습니다. 요즘도 보시면 되구요. 연산자는 5가지 기능이 있습니다. 전달 함수 연산 제어 인 여 출력해서 총 5가지 기능이 있다. 체크해 주시고요. 그 다음에 이 오퍼 랜드에 개수에 따라서 0 주소 1 주소 2 주소 3 주소 명령어 형식이 있다. 이렇게 보시면 됩니다. 부분을 같이 한번 보도록 하죠. 먼저 영주 서 명령합니다. 0 이라는 건 오퍼 랜드에 개수를 의미하는 거에요. 5 퍼레이드가 하나도 없는 명령어 형식 이구요. 수택 구조에서 보통 사용하는 형식입니다.

03:01
1 줏어 명령어는 오퍼 랜드가 1 있는 거죠. 누산기 를 활용해 선우 성기가 뭔지는 뒤쪽에 나올겁니다. 누산기 를 활용해서 연산을 하는 방식이다. 이렇게 알고 보시면 되구요. 2 주소 명령어는 5 프렌드가 2개 있어요. 그렇기 때문에 2 오퍼 렌 드 에 결과를 더하거나 연산 할 수 있겠죠. 그런데 이 두 피연산자의 에 의 결과를 저장할 곳이 없기 때문에 연 샘 결과를 마지막 오퍼 랜드에 덮어 씌웁니다. 그렇게 되면 기존 값은 제거가 되겠죠. 자 그리고 3 주소 명령어 오퍼 랜드가 3개 있습니다. 그러면 2 연산의 결과를 별도로 따로 저장할 수 있죠. 전체의 데이터가 다. 남아 있을 수 있지만 공간을 가장 많이 차지 한다고 되어 있습니다. 그 정도까지 보시면 될 것 같구요. 다음으로는 명령어의 주소 지정 방식 이에요. 주소 지정 방식 이라는 것은 실제 위치에 피연산자의 심지어 위치

04:00
피연산자가 실제 누 저장되어 있는 위치에 접근하는 방식을 이야기하는데 참조 횟수가 많을수록 느리고 요. 적을수록 빠릅니다. 뭐 당연한 얘기죠. 주소 지정 방식은 여러 가지가 있는데 안 쪽에 하나씩 볼 겁니다. 첫번째로 즉시 주소 해요. 오퍼 랜드에 이 부분 요. 이게 명령어 및 아 지금 오퍼 랜드에 실제 데이터가 존재하는 형태에요. 그렇기 때문에 어디를 찾아가지 않습니다. 참조 에이스가 0 이에요. 가장 빠른데 데이터 크기에 따라서 문제가 발생할 수 있다. 이 공간이 그렇게 크지 않기 때문에 문제가 발생할 수 있다. 이렇게 보시면 되겠습니다. 다음으로는 직접 주소 지정이 줘 오퍼 렌즈의 연산 대상의 주소 값을 저장하는 방식이 에요. 그래서 이 오퍼링 뒤에 써있는 주소값을 찾아가는 형태 이렇게 화살표가 한번 나와 있죠. 메모리 참조 횟수가 일입니다. 간단하지만 메모리 확장 및 변경의 어려움이 있다고 되어 있어요.

05:00
사양으로는 간접 주소 지정 이에요. 간접 주소 지정 은 연산 대상의 주소 값이 저장되어 있는 곳의 주소 값을 저장하는 방식이에요. 이해가 되시나요. 아래쪽에 이미지가 나와 있는데 같이 볼게요. 일단 메모리 참조 횟수가 2번 인데 어떻게 들어가는지 이미지를 좀 보겠습니다. 얘기에요. 실제 데이터가 여기 있고요. 이 실제 데이터에 주소 값이 적혀있어요. 실제 데이터에 주소 값이 적혀 있는 위치에 대한 주소 값이 적혀 있는 겁니다. 그래서 두 번 거쳐 간다는 거죠. 구조가 좀 복잡하지만 주소의 길이에 상관없이 언제든 원하는 위치 참조 가 가능한 형태다. 라고 되어있죠. 다음으로는 계산에 의한 주소 지정 이라고 되어 있습니다. 오퍼 랜드 에 저장된 중 소값 꽈 특정 값을 이것도 아니 안 배웠죠. 일단 특정 값을 연산에서 실제 데이터가 있는 위치를 계산하는 방식 이라고 되어 있어요. 인덱스

06:02
레지스터 프로그램 카운 더 회의 쓰레기스트 등이 사용된다. 정도까지만 알고 계시면 됩니다. 자 그래서 지금 레지스터 라는 말이 자주 나오잖아요. 레지스터 라는 부분을 가진 보겠습니다. 레지스터는 cpu 연산에 필요한 데이터나 상태의 값을 저장하는 장치 에요. 일시적으로 저장 한다고 되어 있는데 대부분 다. 거의 일시적으로 저장을 합니다. 내 일시적인 게 문제가 아니고 cpu 에 연산에 필요한 여러 가지 값을 저장한다. 이렇게 알고 계시면 되요. 영구적으로 저장하는 장치 는 거의 없습니다. 일단 메모리 중 가격대비 용량이 가장 작고 속도가 가장 빠르다고 되어있죠. 그러니까? 메모리 중 가장 비싸고 빠르다. 이렇게 보시면 됩니다. 아 여러가지 쭉 싸 있고 플립플롭 꽈 래치 로 구성이 된다고 되어 있는데 각각의 특징을 정말 간단하게 적어 놨어요. 건 크게 중요하지 않습니다. 레지스터는 cpu 에 구성요소인 제어

07:00
장치와 연산 장치 에서 사용되며 다양한 종류가 있다고 되어 있습니다. 보통 cpu 를 제어 장치 연산 장치 그리고 레지스터로 구성된다고 이야기를 합니다. 그래서 각각 한번 이야기를 해볼 거에요. 첫번째로 재어 장치입니다. 제어 장치는 말 그대로 장치들의 동작이나 연산을 제어하는 장치에 요. 연산은 다른 애가 하기 때문에 얘는 올미 제어 만합니다. 아시겠죠. 자 그래서 레지스터와 회로가 존재하는데 어떤 것들이 있는지 좀 볼게요. 메모리 주소를 애기 스타워 라고 되어있습니다. 메모리 중소 렉이 스타 2 의 약자인데 아 데이터의 위치를 기억하고 있네요. 데이터를 기억하는 게 아니라 데이터의 위치를 기억하는 겁니다. 보통 이제 ar 들어가면 건지 레디 스타라고 해서 번지 위치를 기억하는 쪽 이라고 보시면 되요. 자 그 다음 메모리 버퍼 레지스터 여기 버퍼 라고 되어 있죠. 데이터가 잠시 머무는 곳이에요.

08:02
여러가지 이유가 있겠지만 뭐지 대 폰 데이터가 잠시 머물 수 있는 공간이 이렇게 보시면 됩니다. 버퍼 라는 개념을 그 개념이 에요. 자 그리고 프로그램 계수기 프로그램 카운터 다음에 실행할 명령 화 들의 위치를 보관하고 있다고 서 있죠. 이것도 마찬가지 다음에 실행할 명령어의 위치를 보관하고 있다. 그다음 명 미역 4 기스 1000 은 현재 실행중인 명령어 자체를 무관하고 있다. 라고 되어 있고 명령 해도 키 보통 기 로 끝나는게 회로의 요. 레지스터는 말 그들의 이스터 말이 되어 있구요. 명령 해도 키는 명령을 해독하는 회로 고 부 보기는 이 명령을 해독해 쓰면 어떤 장치로 신호를 보내야 되죠. 그 신호를 생성하는 회로의 어 이렇게 생각하시면 되겠습니다. 요. 정도 보시면 되고 얘는 대부분 다. 위치를 기억하고 있잖아요. 위치를 기억하고 있는 이유는 아래쪽에 연산 장치 를 보면 알수가 있어요. 연산 장치 는 실제 연산을 수행하는

09:00
장치 내에 연산 할 때 데이터가 필요하기 때문에 데이터는 연산 장치 에 관련된 레지스터에 들어있어요. 한번 볼게요. 일단 가상 입니다. 딱 이름만 보면 알수 있죠. 값을 더하는 거에요. 이게 노장 기능이 앞에서 나왔던 우상입니다. 계산을 무 적한 단 뜻이에요. 연산의 결과를 일시적으로 보관하는 애기 스타 2 2 2 상기 를 이용해서 계산 결과는 계속 누적 시키는 거죠. 쉽게 표현을 하며 는 2 + 3 + 4 라고 있다고 하면 e 더 3 당의 살을 한번에 계산하는게 아니라 이해하고 삶에 대한 결과를 누산기 에 누정 을 시키고 이 결과와 다시 이 값을 더하는 형식으로 해서 항상 이 향연 산으로 진행을 하는 거에요. 그래서 노 상기 가 필요하다. 이렇게 보시면 되구요. 다음으로 보 숙 이라는 게 있습니다. 웃음이라는 것은 보수 로 바꿔주는 역할을 하고 있는건데 보스 가 뭔지는 자세하게 당신 않을게요. 이 보수를 바꾸는 이유가 빼는 회로가

10:02
없어요. 컴퓨터에는 감상 기 라는게 없기 때문에 가상 길을 통해서 뺄셈을 할 수 있어야 됩니다. 그러기 위해서 보수가 필요한 거에요. 보수 기가 그래서 보수 길을 통해서 보수를 만들고 그리고 이 보수를 가 상기의 집어넣어서 뺄셈을 한다. 이렇게 생각하시면 되겠죠. 자 그 다음 데이터 레지스터 데이터 리스터 는 연산의 사용될 데이터를 기억하는 레지스터 라고 되어 있습니다. 지금까지 좀 봤지만 레지스터는 말 그대로 기억장치 기 때문에 무언가를 저장하고 있을 거에요. 제어장치 같은 경우에는 위치 값을 저장하고 있는 거구요. 그리고 아래쪽에 데이터 레지스터 니까? 데이터를 저장하는 거구요. 그리고 그 밑에 상태 내기 스쳐도 마찬가지죠. 상태를 저장하고 있는 거구요. 인덱스의 비스타는 주소 변경을 위한 레지스터 다. 어떤지 추서 변경을 위한 값을 저장하고 있다.

11:00
이렇게 생각하시면 되겠죠. 느 정도 보고 넘어가도록 하겠습니다. 다음은 시스템 컸습니다. 자 버스는 정보 교환을 위해 물리적으로 연결되어 있는 회산 이라고 되어 있어요. 우리가 컴퓨터 부품 이라든지 메인 보드 이런 것들을 보면 선들이 굉장히 많이 연결되어 있는 걸 볼 수 있는데 그게 버스 라고 보시면 되요. 버스는 내부 버스와 외부 벗으로 나뉘는데 내부는 cpu 내부 요소 사이에 존재하는 거구요. 외부는 cpu 와 주변 장치 사이에 존재하는 거에요. 9분을 잘 할 수 있어야 됩니다. 맵 버스가 그래서 종류가 요렇게 요렇게 요렇게 있다고 되어 있죠. 아래쪽에 나와 있습니다. 주석 버스는 말 그대로 주소 값을 전달하고 요. 데이터 벗은 은 데이터를 전달하기 위한 경로를 제공한다. 고 써 있구요. 제어 벗은 은 데이터의 흐름 제어 신호 적 이런 것들을 전단 한다. 라고 써있습니다. 그리고 추가로 방향을 보셔야 되요. 주소는 담당 향 데이터는 양방 해요. 그리고 제어 퍼스 도 양방향 이라고

12:02
되어있죠. 이 개념까지 파악을 하고 계시면 되겠습니다. 자 명령어는 요정도 넘기고 요. 다음 포인트로 가볼게요. 두번째 포인트가 운영체제 내 어제 운영체제의 앞부분에 이미 한번 봤던 내용들을 다시 정리를 하고 있습니다. 어쨌든 앞에서 살짝 언급을 하긴 했지만 여기서 정식으로 배우는 거기 때문에 다시 한번 언급을 하고 있습니다. 뭐 어떤 소프트웨어다. 뭐 어떻게 어떻게 한다. 제어 프로그램과 처리 프로그램을 나뉜다. 모일 정도로 한번 본적이 있죠. 그 다음에 시간 개념도 잠깐 나온 적이 있는데 여기서 다시 자주 쓰기 때문에 한번 더 짚고 넘어갈게요. 운영 체제 안에서 시간이라는 개념이 여러가지가 있는데 첫번째로 응답시간 입니다. 작업이 입력 빼고 처음 실행 되기까지 걸리는 시간 말 그대로 cpu 를 불렀을 때 cpu 가 네 하고 대답하는 시각 용어를 응 작 시간이라고 보시면 되요. 다음으로 반한 시간부터 볼게요. 반한 시간입니다.

13:01
안 1시간은 작업이 완료되는 시간이에요. 작업이 완료되는 시간은 실행 시간과 실행이 되지 않는 대기시간을 합친 시간입니다. 그러니까? cpu 를 부르는 시간 요게 응답시간 이구요. cp 와 이게 대답을 한 뒤에 어떤 일을 하겠죠. 일을 하다가 뭐 사용자 입력을 기다리거나 아니면 다른 여러 가지 상황 때문에 그 일을 잠깐 멈추는 시간이 있을 거에요. 그게 대기 시간 입니다. 그래서 실행 시간과 대기시간을 합쳐서 작업완료 시간이 다. 이렇게 이야기를 한다는 얘기죠. 실행 시간 대기 시간은 그렇게 어려운 개념이 아니죠. 작업이 끝날 때까지 그 시간 안 해서 작업이 진행되지 않은 시간은 대기시간이 고 작업이 진행된 시간은 실행 시간 이예요. 어려운 개념은 아니니까? 이런 개념이 있다. 정도 알고 계시면 될것 같구요. 다음으로 시간 간격 입니다. 요. 단어가 굉장히 자주 나올 거에요. 이 타임 슬라이스가 보더라구요. 헌 탐 이라고도 하는데 시간 간격 프로세스가

14:00
운영체제로 부터 할당받은 시간 이라고 되어 있어요. 예를 들어서 5초 라고 하면 해당 프로세스는 이 타임 슬라이스 는 기준으로 퀀텀 을 기준으로 만 작업을 합니다. 그래서 5초 단위로 작업을 한다. 이렇게 생각을 하시면 되요. 애기 타임 슬라이스 1기 있다. 정보 보시면 되구요. 그 다음에 운영체제가 관리하는 자원은 들이 뭐가 있는지 아래쪽에 나와있죠. 어려움은 아니구요. 프로세스의 메모리 주변 장치 파일 등을 관리할 수 있다. 정도 보고 나니 좀 설명은 읽어보시면 됩니다. 뭐 할게요. 자 그래서 운영체제가 어떤 종류가 있는지 보통 우리가 보편적으로 사용하는게 윈도우 지구요. 그 다음에 뭐 유닉스 리눅스 이런 것들이 있습니다. 요. 세가지 정도를 같이 서 볼 거에요. 자 간단하게 다. 읽어볼 수 있는 부분들이 인데 일단 핵심만 제가 체크를 해 놨어요. 첫번째로 gui 그래픽 사용자 인터페이스 기반으로 우리가 어떤 특정 이미지 라든지 이미지화 되어 있는 메뉴를

15:01
클릭하는 아이콘을 클릭하는 이런 형태적 그래픽 기반으로 인터페이스가 구성돼있다. 라는 거랑 선점 형 멀티태스킹 가능 하다. 라고 써있습니다. 오른쪽에 설명이 나와있죠. 다음에 1개의 컴퓨터를 한 사람이 독점 한다. 그래서 싱글 유저 시스템이라고 이야기를 해요. 물론 다른 사람이 앉아서 쓸 수도 있지만 그때는 이전에 안 했던 사람이 비켜 줘야 되죠. 요렇게 보시면 되고 그 다음에 플러그 앤 플레이 를 구성해 준다. 라고 되어 있습니다만 이 좀 어려운데 우리가 마우스 같은거 컴퓨터에 꽂으면 그냥 바로 쓸 수 있죠. 특별한 뭘 설치할 필요없이 이거를 플러그 앤 플레이 라고 이야기합니다. 다음으로 ole 능이 존재한다고 이야기 하고 있는데 5일 이라는 것은 우리가 원이 프로세서 또는 뭐 엑셀 이런 것들을 사용할 때 이미지를 불러오거나 차트를 이용할 수 있죠. 다른 객체를 불러올 수 있는 또는 다른 객체를 불러와서 편집할 수 있는 이런 기능이 올해는 이라고 보시면

16:01
됩니다. 이런게 윈도우즈는 특징이다. 라고 기업을 해주시면 되구요. 다음으로 유닉스 로 넘어 갈게요. 사실 문제는 유닉스 랑 리눅스 쪽에서 많이 나옵니다. 유닉스 의 특징 c 언어 기반 이구요. 이치현 업 입 아니기 때문에 이식성 이웃을 하구요. 라이센스 비용이 저렴하다고 되어 있습니다. 다수의 작업을 병행 처리 할 수 있구요. 다수의 사용자가 동시에 사용할 수 있다. 싱글 유전 시스템이 아니라는 거죠. 계층적 파일 시스템과 다양한 네트워크 기능이 존재한다. 고 되어 있습니다. 그런데 이것은 사실 윈도우즈 도 비슷한 특징이 있습니다. 그래서 뭐 이거는 이것만 보시면 될 것 같구요. 그리고 이제 여기서 중요한 부분 핵심적인 부분은 커널 와 쉘 ut 밑으로 구성이 된다는 점이에요. 그래서 각각 커널 마셜 유틸리티가 뭐하는건지 꼭 암기를 해주셔야 됩니다. 헐은 핵심 시스템이 고요. 유닉스의 핵심 시스템 그다음 쉘은 사용자 명령 해석을 통해 시스템 기능을 시행하도록 하는 친구

17:00
유치 니체는 먼지 아시죠. 우리가 쓰는 프로그램 같은거라고 보시면 되요. 너무 꽥 이번에는 리눅스 나와 있죠. 리눅스는 유닉스 기반의 오픈 소스 시스템 소프트웨어 라고 되어있어요. 다양한 배포 버전 있고요. 리눅스에서 가장 유명한 배포 버전이 안 들어오게 되죠. 그 다음에 마이크로 커널을 사용하는 유닉스 완 달리 리눅스에서는 모 놀리 식 모 놀리 치기 라고도 합니다. th 발음 이라서 커널을 사용한다고 되어 있습니다. 자 그래서 마이크로 커널은 최소한의 기능을 제공하고 확장이 가능한 형태 구요. 오늘 20 같은 경우에는 확장에 불가능하지만 간단하고 맞나요. 이렇게 9분을 할 수 있으시면 되겠습니다. 다음으로 6시에 주요. 특징 중에 명령어가 나와있어요. 자 이거는 내용이 좀 많긴한데 어쩔 수 없죠. 배우셔야 되요. 문제 설명에 맞는 이 명령어를 선택할 수 있어야 됩니다. 자 그런데 암기할 때 이 단어의

18:01
의미가 그렇게 동떨어진 것은 아니기 때문에 암기 자체가 그렇게 어렵진 않지만 아 좀 어려운 단어들이 있겠죠. 아무래도 이런 것들 유동 법들이 조금 어려운 개념이 있겠지만 어쩔 수 없죠. 암기를 잘 해주셔야 되요. 이게 문제의 나옵니다. 넘어갈게요. 유닉스의 파일 시스템에 대해서도 나와있네요. 유닉스 의 판 시스템은 앞에서 받듯이 대칭 구조로 되어 있습니다. 디렉터리 나 주변장치를 파일과 동일하게 취급한다. 고 해야 있어요. 그렇기 때문에 파형 싱이 일반 파일이 있고 디렉터리가 있고 그 다음에 즉 쓰 파인 뭐 이런것들이 있다고 되어 있습니다. 자판 시스템은 부트 블록과 슈퍼 물로 아이에요. 아이 노드 블로 인덱스 를 뜻하는 건데 어쨌든 데이터 블록 형태의 구성이 된다고 되어 있고요. 각각의 블록에 대한 설명이 아래쪽에 나와 있습니다. 역시나 암기는 해주셔야 겠죠. 훨씬 더 복잡한 내용이긴 하지만 아 좀 압축해 하십니까? 그래도 암기하는 데 도움이 되실 거에요. 제 표정도 보고요.

19:00
사람으로 권한 설정 보겠습니다. 이 권한 설정은 조금 깊게 공부를 할 필요가 있습니다. 핵이 심히 다. 종족 나오는 부분이구요. 파일과 디렉토리의 권한을 변경하는 명령어 이거 앞에선 봤죠. 읽기 3기 실행에 대한 권한을 변경할 수 있습니다. 자 읽기 나 c 기 실행에 대한 권한을 변경 하는데 이 권한을 가지는 유형도 있어요. 소유자 소유 그룹 사용자 별로 이러한 권한을 지정하는 겁니다. 그러니까? 총 9개의 권한이 들어가 있어야 되는 거죠. 실제로 권한을 입력할 때는 이런 식으로 진행해요. 첫번째 파일 타입을 기록하고 요. 그 다음에 손자에 대한 건은 섬 그룹에 대한 건 안 일반 사용자에 대한 권한을 적어 준다고 생각하시면 되요. 하이 타임은 일반 파일 은 - 디렉토리는 길이라고 접어 주시면 되구요. 그 다음에 읽기 권한 쓰기 고난 실행 원하는 각각 rwx 라고 쓰시면

20:00
되는데 만약에 권한을 주고 싶지 않을 경우에는 하이퍼 늘 적어주면 된다. 라고 써 있습니다. 자 그런데 이렇게만 쓰는게 아니라 이렇게 써 있는 것들 이 진수와 대형 시켜서 권한을 변경한 중에 다시 결합해서 10진수로 변환 해야 된다고 써 있어요. 뭔소린지 이해가 잘 안되시죠. 이 부분을 제가 편 호 예시를 몇가지 드러났습니다. 자 한번 보죠. 왼쪽의 권한 예시 나와있습니다. 임의로 맨 앞에 있는 파일이 라던지 디렉터리 그 부분은 뺐어요. 그 부분은 그냥 보고 판단하면 되는 거니까요. 첫번째꺼 보조 일단은 3가지로 나뉘어져 있다는 게 보이시죠. 이렇게 3개를 나뉘어 있어요. 또 3개로 나뉘어 있고 아무도 마찬가지 자 그러면 맨 첨 이 소유자에 대한 두 번째 가 소유 그룹에 대한 세 번째가 사용자에 대한 권한이 라고 보시면 됩니다. 자 그런데 rwx x 가 실행 이구요. 어떤 원료가 수비 알이 1 게임 내 전부

21:01
rwx 가 기록이 되어있죠. 자 이건 잃기 쓰기 실행의 대한 권한을 전부 주겠다는 뜻이에요. 자 그러면 얘네들을 2진수로 바꿉니다. rwx 가 쌓여 있는 애들을 가 1로 바꾸면 되요. 그러니까? 여기가 111 112 링 거에요. 그것을 제가 옆에다가 이렇게 들어 트리 얻은 겁니다. 이게 되 시조 아니나 떠올린 아 x 가서 있으며 는 이를 쓰면 되는 거에요. 자 그러면 이렇게 이 흰 수로 지금 다시 변화를 했죠. 그러면 이후 각각의 이진수 총 3개의 그룹의 2진수를 다시 10진수로 바꾸는 겁니다. 이 진술 1 2를 10진수로 바꾸면 7이 에요. 그러니까? 결국엔 칠칠치 링 거죠. 자 그래서 277 7이라는 10진수를 보고서 아 이거는 지금 소유자 소유 그룹 사용자 모두 읽기 쓰기 실행 권한을 다. 주는 거구나 라는 게 판단이 되어야 된다는 거에요.

22:01
이해 되시죠. 다음 못하면 같이 볼게요. 조금 설명을 간략하게 먹게 이번에는 마찬가지입니다. 3개로 나뉘어져 있구요. 여기 보니까? 읽기 쓰기 읽기 읽기 시기 실행까지 포함해서 이렇게 처음 9개의 권한이 지정되어 있어요. 자 그런데 여기서 하이픈 있잖아요. 하이 폰 부분만 영어로 바꾸면 되요. 자 그래서 여기가 1 1 0 이구요. 1 0 0 이고 얘는 1 인 거죠. 자 그래서 이렇게 2진수로 바꿨고 이걸 다시 10진수로 바꾸는 거죠. 방금전에 일리는 치기도 하고 있습니다. 자 그리고 100 물 2진수를 100 은 10진수를 자구요. 그 다음에 110 은 10진수를 6 이에요. 그래서 육사 7이 결과가 되는 거죠. 서 육사 7을 보고 어떤 권한을 가지고 있다라는 것들을 판단할 수 있단 얘깁니다. 자 이번에는 반대로 17 수 부터 넘어가 볼게요.

23:01
정 어려우니까요. 4406 을 보겠습니다. 어사 공력을 영상을 정으로 볼게요. 4 02 랑 6입니다. 얘네들은 일단 어떻게 해야 겠어요. 2진수로 바꾸어야 겠죠. 일단 6 이에 해당하는 2진수는 110 이구요. 다음에 영예의 해당하는 인수를 모형이 겠죠. 그 다음에 사이에 해당하는 인수는 1 0 0 입니다. 자 밝혔습니다. 이 바뀐 상태에서 어떻게 해요. rwx 이에 대응 을 해주시면 되요. 이라고 써있는 건 rwx 를 그대로 써 주면 되구요. 나머지는 하이픈 으로 바꿉니다. 여기도 마찬가지죠. 영은 다. 아이폰으로 바꾸고 나머지는 rwx 의 대응해서 적어주시면 되요. 요로케 입니다. 자 그러면 이 왼쪽에 있는 게 소유 자야죠. 그 다음에 가운데 있는게 소유 그룹 이었어요. 그 다음에 오른쪽 끝에 있는 게 사용

24:00
자였습니다. 자 그러면 해석이 가능하죠. 사용자는 읽고 쓰기가 가능하고 소유 그룹은 아무것도 못해요. 그 다음에 소유자는 읽기 가능하다. 이렇게 해석을 하시면 되는겁니다. 아시겠죠. 이런 식으로 접근을 하면 된다. 이렇게 할 줄 아셔야 되요. 자 그래서 이 10진수 만 보여주고 권한을 설명 하든가 아니면 권한을 설명하면서 싶진 소에 대한 보기를 레딩 가 이런 식으로 문제가 나오겠죠. 이 정도까지 보겠습니다. 다음으로 리눅스 쉘 스크립트의 나와 있습니다. 이 스크립트 라는 것은 게 프로그래밍 언어 라고 보시면 됩니다. 간단하게 명령어 들의 조합으로 구성된 스크립트 언어 2 숄 에서 사용하는 이션 이라는걸 우리가 앞에서 배웠죠. 유닉스의 구성 요소 중에 쉘 커 날 ut 빛이 이렇게 3가지가 있다고 했었죠. 그 쉐리 에요. 어 일단은 이 스크립트를 작성 하게 되면은 shp 파일로 저장이 된다고 써 있어요. 에세이 칠하는 계몽 만점 sdh 이런식으로 확장자는 얘기하는 겁니다.

25:01
어쨌건 이런 파일로 저장한 뒤에 필요할 때 저는 주기적으로 실행할 수 있는 그 배치 파일의 성격을 가지고 있죠. 배치 프로그램의 어쨌든 뭐 그렇습니다. 자 그래서 여기에 환경 설정 변수 라는게 포함이 되어있는데 유분을 기억을 하셔야 되요. 환경 설정 변수만 환경 설정 명령어 안긴 해주셔야 됩니다. 문제 나오니까요. 암기하기 좀 많아 지긴 하는데 줄 수 없죠. 힘내시고 암기를 꼭 해주세요. 일단 전 넘어가겠습니다. 자 그래서 코드를 같이 한번 볼 건데요. 복잡하지 않습니다. 그런데 조금 애매하고 난해한 부분이 있어요. 한번 볼게요. 기본 입출력 일단 다행히도 한가지씩 밖에 없습니다. 리드가 기본 입력 이구요. 에코가 기본 출력 이에요. 그리고 변수를 사용할 때 스트링 기업 딸락 이어 라고 하죠. 이걸 붙여야 됩니다. 그래서 lead a 라고 하면 변수 a 에 입력 값을 저장한다. 라는

26:01
의미가 되는거구요. 이거 사용하는게 아니기 때문에 변수를 출력하는 게 아니기 때문에 빨라 기회가 안 붙어요. 자 그 다음에 에코 출력하게 습니다. 하고요. 문자열과 이 변수를 출력하게 습니다. 라는 말이 되는 거에요. 어렵지 않죠. 의 정도로 보면 되겠습니다. 자 그런데 이 다음부터 가 조금 복잡해요. 선택제 험은 여기도 이프 문이 있거든요. 그러면 당연히 조건 시기 필요하겠죠. 자 그래서 조건 씹을 어떻게 쓰는지를 보셔야 되는데 여기는 기후가 아니에요. 크다. 작다. 이기우가 아니라 이 크다. 작다. 에 영어 표현을 약어로 쓰고 있습니다. 자가 챔 을 2q 에어 이퀄 약장 햇죠. 그 다음에 같이 않으면 애니입니다. 네거티브 양철 거구요. 그 다음에 gt 는 그레이티스트 그 다음에 보다. 작음 1 로우 웨이스트 이렇게 보시면 되고 크거나 같은 은 이 gt 의지와 각 채 메일을 합친 거에요. 작거나 같은 마찬가지죠. ltl 과

27:00
같음 a 를 합친 겁니다. 그래서 기운을 써보자면 이해는 같음 이구요. 얘는 같이 않음 이구요. 이걸 느낌 됩니다. 그리고 보자 큼은 이렇게 겠죠. 후 번화가 체는 1월 개 끌고 요. 작은 작거나 같은 이렇게 보시면 됩니다. 자 이런식으로 기호를 쓰는데 주의하셔야 될 부분은 n 에오스 길을 반드시 해줘야 돼요. 서호 부분이 될 수 있게끔 뭘 좀 더 보시면 되겠습니다. 외우기가 어려운데 그래도 어느정도 의미 파악은 되죠. 넘어가서 이포 문의 부자를 보겠습니다. 이 포문은 구조가 다른 언어와 크게 다르지는 않지만 표현 방식의 분명한 차이가 있습니다. 그래서 주의하셔야 되요. 자의 푸 시작하는데 이건 특이하게 마무리가 2% 바꿨어요. 그래서 이프 에 마지막은 fia 에 요. 이렇게 이제 막혀 있구요. 조건식 이 끝나면 이후 덴 이라는 부분을 꼭

28:00
붙여 주셔야 되고 조건식 뒤에 세미콜론 이 부터 이 줘 이런 부분도 체크를 잘 해주셔야 됩니다. 비너스 기가 되어 있는건 다. 이유가 있는거예요. 나머지는 어려운 게 없구요. 다음은 페이스 문이요. 케이스도 그냥 케이스가 아니라 이미 붙죠. 이 부분 잘 생각하셔야 되구요. 변수명 앞에 스트링 디 없는거 체크 잘 해주셔야 됩니다. 그리고 여기 과로 보이시죠. 과로가 여기 없는 게 정상입니다. 이쪽에 없는게 정상 해요. 아 그리고 세미콜론 두개 들어가는거 정상이고 요. 마찬가지인 케이스 늘 뒤집어서 표현을 하고 있죠. 형통 착한데 이런식으로 진행이 된다. 선택 제어 문만 이래요. 자 이렇게 보시구요. 다음 이번에 반복 제어문 입니다. 반복 제어문 은 뒤집지 않습니다. 모포를 roof 이렇게 바쁘지 않아요. 반복 제어문 은 세 가지가 있는데 3가지 모두 종료 키워드는 뒤집는 게 아니라 넌 을 사용한다. 라고 되어있구요.

29:00
폼 볼게요. 자 폼은 여기 형식 헤더에 나와있구요. 아래쪽에 주던 있죠. 2 하고 던 사이에 있는 문장을 반복하게 딴 뜻입니다. 작은 에서 이 반복하는 걸 어떻게 진행할 것인지 두 가지 형식의 나와있습니다. c 언어처럼 펼 수 있고요. 그 다음에 파이썬 처럼 표현할 수가 있어요. 자 그런데 여기서 1 12 라고 4 2시면 은 파이썬 같은 경우에는 일부터 10 전까지 이렇게 해석을 하셔야 되는데 얘는 파이썬 이 아니기 때문에 1부터 10까지 입니다. 이런 부분이 조금 헷갈릴 수 있죠. 주의하셔야 됩니다. 사양으로는 와 1 와인은 조건식을 만족하는 동안 반복하는 거에요. 만족하는 동안 뭐 하는 동아 광 일 자 그래서 이 조건을 만족하는 동안 반복을 하는거구요. 그 다음에 언 t 낸 만족하는 순간 끝내요. 그러니까? 만족하지 않은 동안은 거죠. 앱까지 가 약간 다릅니다. 의미가 그렇기 때문에 조심하셔야 되요.

30:01
요구까지 보도록 하겠습니다.

728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/487QNH9uiNY?si=NXAtQfF5eDH3XGm0

1. 파이썬과 C언어의 기본 개념과 연산자

1-1. 파이썬과 C언어의 기본 개념
- 파이썬과 C언어는 모두 프로그래밍 언어지만 사용하는 자료 구조에 문제가 발생하는 경우가 많음
- 파이썬에서는 동적 타이핑 방식을 사용하며, 변수의 타임을 별도로 지정할 필요가 없음
- C언어에서는 문자열을 통해 입력을 받으며, 입력받은 값을 정수형으로 변환함
- (중요) 파이썬에서 표준 입력 함수는 문자열 형태로 입력을 받으며, 변환이 필요함

1-2. 파이썬의 입력 및 출력 방식
- 입력 전에 특정 문자열을 출력하며, 입력 시에 해당 문자열을 정수형 변수로 변환함
- 표준 출력을 사용할 시, 실제 입력 값이 주석 처리되며 출력됨
- 프린트 함수를 사용하면, 입력받은 문자열이 띄어쓰기로 변환되며 출력됨
- (중요) 애쉬 기호를 사용하면, 문자열의 인덱스를 지정해 출력할 수 있음

1-3. 파이썬의 연산자 방식
- C언어와 파이썬의 연산자 부분은 대체로 비슷하지만, 파이썬은 더 다양한 연산자를 제공함
- 나눗셈에서는 파이썬은 무조건 결과 값을 0으로 반환함
- 이는 파이썬에서 정수와 실수를 나누어 나누는 방식과 관련이 있음
- (중요) 연산자에 따라 결과 값이 달라질 수 있으므로, 각 연산자의 특성을 잘 이해해야 함

2. 파이썬 기초 이해와 자료구조 활용

2-1. 파이썬의 기본 이해
- 파이썬의 기본 언어로서의 역할과 기능을 설명함
- (중요) 파이썬에서 사용하는 기본 자료형들과 그 의미를 소개함
- 연산자 우선 순위와 논리 비교 연산자의 사용법과 중요성을 강조함
- 파이썬에서 데이터의 관리와 탐색을 위한 자료구조의 이해와 활용을 설명함

2-2. 파이썬의 자료구조와 그 활용
- 시퀀스, 리스트, 멤버 연산자 등 파이썬에서 제공하는 자료구조의 이해와 활용을 설명함
- 각 자료구조의 특징과 사용 예를 구체적인 예시로 설명함
- (중요) 자료구조를 이용한 데이터의 관리와 그 중요성에 대해 강조함

2-3. 파이썬의 인덱싱과 슬라이스 활용
- 인덱싱과 슬라이스의 개념과 그 활용 방법을 설명함
- 인덱싱과 슬라이스를 사용하여 특정 위치의 데이터를 추출하는 방법을 구체적으로 설명함
- (중요) 인덱싱과 슬라이스의 특징과 활용 예를 설명하며, 코드 작성 시 주의점을 강조함
- 파이썬에서 제공하는 다양한 기능과 이를 활용한 예시를 통해 인덱싱과 슬라이스의 이해를 돕고 있음

3. 파이썬 언어 기초 함수 이해

3-1. 기본적인 함수 이해
- 기본적인 파이썬 언어 함수들을 소개함
- 함수들을 이용해 문자열을 다루는 방법을 설명함
- 각 함수들의 특징과 사용 예를 들어 설명함
- (중요) 각 함수의 역할과 사용 상황을 알아야 응용 가능함

3-2. 리스트 관련 함수 이해
- 리스트 관련 함수인 '어펜드', '익스텐드', '인덱스', '코드', '리스트 팝', '리스트 카운트'를 설명함
- 각 함수를 이용해 리스트를 추가하거나 삭제하는 방법을 설명함
- (중요) 삭제할 때는 '팝' 명령어를 사용하고, 데이터를 검색해 해당 위치로 가져오는 방법을 설명함
- 검색이나 삭제 후 결과를 문자열로 반환해주는 함수들을 설명함

3-3. 이스트 함수 및 중요성
- 이스트 함수를 소개하며, 이를 통해 리스트를 이스트 형태로 반환하는 방법을 설명함
- (중요) 이스트 함수를 사용하면 데이터의 순서를 반전하거나 정렬을 할 수 있음
- 특히, 데이터의 정렬이 중요한 경우 유용하게 활용될 수 있음
- 이스트 함수의 특징과 사용 상황을 알아야 응용 가능함

4. 파이썬 언어의 자료형과 제어문 이해

4-1. 파이썬 언어의 자료형 이해
- 파이썬 언어에서는 메인 주를 입력하면 내림차순으로 정렬이 이루어짐
- (중요) 리버스 부분은 요소의 순서를 반전시키는 것으로, 원본이 변형된 상태를 유지하고 싶을 때는 사본을 만들어 정열하거나 반전이 필요함
- 맵핑 형은 하나의 식별 현호 서로 다른 타입의 다수 데이터를 관리하며, 순서가 없어 인덱싱이 불가능함
- 맵핑 형의 특성 상 특정 키값을 지정하여 해당 키값과 동일한 데이터를 가져옴

4-2. 딕셔너리 자료 구조의 이해
- 딕셔너리 자료 구조는 사전처럼 키와 값의 쌍으로 구성된 데이터로, 데이터의 수정, 삽입, 삭제가 자유로움
- (중요) 키 값이 없는 경우에는 데이터를 새롭게 생성함
- 딕셔너리 관련 함수로는 키 값과 데이터를 추출하거나 키와 데이터 쌍을 이루는 것들이 있음
- 딕셔너리 점 튀지 함수를 통해 키 값만 추출하거나 데이터 값만 추출할 수 있음

4-3. 제어문의 이해
- 제어문은 주어진 조건에 따라 다른 행동을 하도록 설계된 프로그래밍 구조로, 조건에 따라 다른 값을 출력하거나 할당할 수 있음
- 반복 제어문은 조건에 따라 반복 수행되는 코드를 가리키며, 기본형 시간 요소를 통해 요소들을 하나씩 변수에 할당함
- (중요) 제어문은 콜론 혹은 이프 등의 조건식을 통해 특정 조건에 따른 동작을 제어함
- 조건에 따라 다른 행동을 하는 제어문은 필요한 부분에 따라 중간 없이 바로 다음에 이해

5. 반복문

5-1. 반복문 종류
- (중요) 절대적 반복, 상대적 반복, 고정된 반복, 상황에 따라 반복하는 반복에 대해 설명함
- 절대적 반복은 시작 값, 종료 값, 증가 값이 있고, 반복 횟수는 시작 값부터 종료 값까지의 차임
- 상대적 반복은 특정 시작 위치부터 일정 간격으로 반복되며, 반복 변수의 값이 소용돌이함
- 고정된 반복은 한 번만 수행되며, 결과가 동일한 상태가 됨
- 상황에 따라 반복하는 반복은 반복문 안에 또 다른 반복문을 만들 수 있음

5-2. 함수의 정의와 예시
- 함수는 외부에서 정의된 반복에 대해 내부에서 정의된 반복으로 간주할 수 있음
- 함수는 매개변수를 가지고 있으며, 메소드는 인스턴스를 통해 호출됨
- 예시로는 정수를 저장하고 반환하는 반복문이 있음
- 멀티플 반복은 여러 번 반복할 수 있으나, 결과 값을 저장하지 않음
- 자바에서는 메소드의 정의와 사용을 명확히 하기 위해 여러 단어를 사용함

5-3. 객체지향 프로그래밍
- 객체지향 프로그래밍은 파이썬을 포함한 모든 프로그래밍 언어를 아우름
- 객체지향 프로그래밍은 클래스, 객체, 메소드의 개념을 사용함
- 클래스는 인스턴스를 통해 객체를 생성하며, 메소드는 인스턴스 내에서 정의됨
- 메소드는 매개변수를 가지며, 인스턴스를 통해 결과 값을 저장함
- 객체지향 프로그래밍은 데이터와 코드의 분리, 상호작용을 통한 통합 구현을 목표로 함

6. 인스턴스 변수

6-1. 인스턴스 생성과 메소드
- 인스턴스 생성 시 변수 생성과 동시에 값을 할당받음
- 인스턴스 변수와 메소드는 클래스 생성 시 자동으로 불러지고, 임의로 변경 불가함
- 파이썬에서는 생성자와 메소드를 동일한 이름으로 정의하지만, 생성자만 생성자로써 구분함
- (중요) 파이썬에서 인스턴스 생성 시 변수명에 언더스코어를 붙이면, 그 인스턴스의 변수를 생성하는 메소드가 함께 생성됨
- 인스턴스마다 클래스 변수를 갖지만, 생성 시 클래스명을 사용해 직접 접근 불가하게 할 수 있음

6-2. 클래스 변수와 상속
- 클래스 변수는 클래스 구역에서 선언하며, 인스턴스 내부에서는 공유 가능하지만 외부에서는 접근 불가함
- 클래스 변수를 생성할 때 인스턴스 변수를 포함하면, 각 인스턴스에서 클래스 변수를 1개씩 공유하게 됨
- 인스턴스 생성 시, 클래스 변수를 1개씩 증가시키면, 각 인스턴스마다 클래스 변수가 1개씩 증가함
- 상속은 클래스의 인스턴스 변수를 다른 클래스로 이전시키는 것으로, 다른 클래스로 이전시 상속자와 같은 선언을 함

6-3. 인스턴스 변수의 이해
- 인스턴스 변수는 클래스 인스턴스 생성 시 값을 할당받고, 다른 인스턴스에서 접근 가능함
- 인스턴스의 변수명에 언더스코어를 붙이면, 해당 인스턴스의 변수를 생성하는 메소드가 함께 생성됨
- 생성자 메소드는 인스턴스 생성 시 자동으로 호출되고, 임의로 조정할 수 없음
- 셀프 컬러의 인스턴스 변수는 클래스 인스턴스의 하나로, 생성자 메소드가 자동으로 생성됨
- 파이썬에서는 인스턴스의 인스턴스 변수를 클래스별로 다르게 지정할 수 있음

00:01
4과목 네번째 짱입니다. 스크립트 프로그래밍 언어 중의 대표적인 파이썬을 같이 공부해 볼 거에요. 파이썬은 문법 자체가 굉장히 쉽기 때문에 문제가 나온다고 하면 난이도가 기본적으로 났습니다. 그리고 문법 자체보다는 이 파이썬에서 사용하는 자료 구조에 대한 문제가 나오는 경우가 더 많아요. 이런 부분을 중점적으로 같이 한번 공부해 보겠습니다. 파이썬 프로그래밍 섹션 하나밖에 없구요. 파이썬 기초 늘 먼저 보겠습니다. 변수 부터 나와있죠. 파이썬은 상소 리터럴 표기법 이에요. 상술 표기법의 타임에 따라서 변수의 타입이 자동으로 정해지는 동적 탕 핑 방식이라고 되어 있어요. 앞에서도 동적 타이핑 이라는 말을 한번 언급을 한 적이 있죠. 변수에 타임을 별도로 지정할 필요가 없다. 이렇게 생각하시면 됩니다. 파이선 에서는 한글도 변수명 으로 사용 가능하지만 권장하지는 않는다.

01:00
분사 능하다는 아니라는 거죠. 파이썬에서 정수형 상수 를 표현하는 방법은 지점과 똑같은데 하나가 추가됐습니다. 이진주 더 표현이 가능해요. 숫자 앞에 0 과 b 를 붙이게 되면 이젠 수 표현이 가능하다. 시 언어에서는 불가능 했었죠. 이 과정이 나와있구요. 칠수 같은 경우에는 기존의 방법에 더해서 복소수 표현이 가능해요. 왜서 쉴수 무와 허수 부 제 2의 의 표현 방식으로 우와 + 6.5 j 이렇게 쓰게 되면 은 여기 복소수 가 된다. 이렇게 보시면 되겠습니다. 다음 문자열 상수 파이썬은 문자를 문자열로 통합해서 관리를 한다고 되어 있죠. 작은따옴표 와 큰따옴표 모두 문자열로 인식합니다. 요기 c 언어 자바 와 차이점이 줘 문자가 없어지고 문자 표현이 문자열 표현 으로 대체되었다. 이렇게 생각하시면 되겠습니다. 각 차이를 9분을 잘 해주시면 됩니다. 넘어가서

02:00
표준 입력 함수 나와 있죠. 키보드를 통해서 입력 받는걸 표준 입력 이라고 했다. 고 말씀을 드렸고 항상 문자형 형태로 입력 받기 때문에 파이썬에서 표준 입력 함수는 무조건 문자열 형태로 입력 받는다. 그렇기 때문에 다른 형태로 변환이 필요한데 그 변환이 필요. 하는게 요기 적어놨습니다. 인체는 입력받은 값을 정수 영어로 플러스 7시 형으로 변환하는 함수 라고 보시면 되고 7 제로는 요런식으로 입력을 받습니다. 임프 탐색 고요히 안에 푸른 부피에 해당하는 문구를 적게 되면 입력 받기 전에 해당 문구를 출력한 다음에 입력을 받는 형태로 구현할 수가 있어요. 이렇게 보시면 되겠고 다음으로 이번에 표준 출력 2 줘 파이썬에서 는 프린트를 하는 함수만 가지고 모든 표현을 할 수가 있습니다. 행사 형식 그대로 출력할 수 있고요. 여러 인수를 통해서 출력 방식을 조절할 수 있다고 되어 있고요. 그리고

03:00
기본 값입니다. 데이터를 출력하는 징이 줄바꿈을 해주는 함수 프린트는 기본값이 줄바꿈 이에요. 재 그래서 형식이 나와 있죠. 아 조금 어려울 수 있는데 프린트 라고 써있는 다음의 값들을 요렇게 적어줍니다. 그러면서 마지막에 seq 낸 어쩌구 또는 nd 는 어쩌구 이런 식으로 쉬울 수 있다는 거에요. 물론 이건 n 대가로 가서 이기 때문에 생략 가능합니다. 애쉬 q 같은 경우에는 9분자 말 그대로 출력 값들 사이의 이가 빅아이 값들 사이의 출력된 9분 문자를 지정할 수가 있습니다. 지정하지 않고 기본값으로 되면은 띄어쓰기 로 되어있구요. 종류 저도 마찬가지에요. 문장을 다. 출력한 다음에 출력될 종료 문자를 지정할 수가 있는데 기본 값에 엔터 줄바꿈 입니다. 그렇기 때문에 기본적으로

04:00
줄바꿈이 되는 거다. 이렇게 생각하시면 되요. 예를 들어서 프린트 라고 졌구요. 10과 콘 말 20 이렇게 입력을 하게 되면 10과 20을 띄어쓰기 로 9분해서 출력을 하게 됩니다. 자 그런데 만약에 여기서 sle q 낸 - 하이픈 이죠. 이렇게 입력을 했다. 라고 하면 실제 출력은 쉽 tv 가 아니라 10 - 20 이렇게 출력이 될 거에요. 자 그리고 여기까지 하시게 되면은 이렇게 쓰고 다음 프린트로 쓰게 되면 은 그 다음 주에 입력을 하면 되겠지만 여기서 만약에 알이 좀 해 줄게요. ndl 하고서 이렇게 큰 따옴표 만 2개를 하게 되면 엔터가 사라집니다. 그렇기 때문에 그 다음 출력이 여기서부터 될 거에요. sdk 와 & 에 해당하는 매개변수가 가지는 역할에 대해서 같이 공부를 해본 겁니다.

05:00
자유 정도 보면 될 것 같구요. 계속 말씀드리지만 표준 출력 은 실제로 이렇게 복잡하게 나오질 않습니다. 줄바꿈이 되냐 안되냐 좀더 많 파악을 할수 있어도 충분히 문제 푸는 데는 무리가 없을 거에요. 다음 그림 추석 처리 입니다. c 언어 같은 경우에는 / 2번 을 통해서 주석 처리를 하구요. 파이썬 같은 경우에는 # 문제를 통해서 주석 처리합니다. 이런식으로요. 뭐 차이만 9분을 할 수 있으면 되 거구요. 여기 가장 기본적인 코드 니까? 같이 한번 보도록 할게요. 자 첫번째로 임프 탐 수에 결과값을 네임 에다가 할당을 하고 있습니다. 왼쪽의 아무것도 안 적혀 있지만 지금 이건 네임이 처음 언급돼 있기 때문에 네임 이라는 변수가 생성이 된 거고 그 네임 이라는 변수 안에 임프 메소드의 인터 탐 수에 파이썬에서 는 함수 랑 메소드를 허용합니다. 여기서는 함수가 맞겠네요. 임프 탐 수에 결과값을 내의 4 집어 넣어준다.

06:02
이런 얘긴데 인 뜻함 술을 한번 보겠습니다. 임프 탐 수안어 프롬 부채가 적혀 있는 거거든요. 자 그렇게 되면 일단은 입력을 받기 전에 요. 풀업 요철을 출력합니다. 자 그래서 실제 번 프로그램을 실행해보면 이름 입력하고 땡땡 까지 써있고 여기서 커서가 깜빡깜빡 거리고 있을 거에요. 자 그럼 여기서 입력을 해줍니다. 그리고 엔터를 딱 치게 되면 은 요. 임프 3 결과가 요. 이기적이라는 이 문자의 되는거구요. 이 문자열이 네임에 들어가있다. 이렇게 보시면 되겠습니다. 아내도 마찬가지죠. 일단 라이 입력이 먼저 출력 되구요. 커서가 깜빡깜빡 거리고 있을 때 35 를 쓰고 엔터를 치게 되면 임포트 탐식의 결과는 35 라는 문자가 여긴 거에요. 자 근데 이 문자열을 인 트 함수를 통해서 숫자로 바꿔 줘서 ang 값을 할당

07:00
해주는 거죠. 이렇게 되면 사시오 이렇게 되면 h 는 정수형 변수가 되는 겁니다. 이해 되시죠. 동적 타이핑 이에요. 아내도 마찬가지죠. 프론트 출력하고 요. 깜빡깜빡 어렸을 때 일정이 입력하게 되면 은 1.2 가 일단은 문자열로 능력이 되는데 이 플롯 함수를 통해서 실수 로 바꾼 다음에 이 값을 사이트 변수에 집어 넣는다. 라는 거죠. 그래놓고 출력을 할 때는 이렇게 편할 수가 있다고 써 있는 겁니다. 당신의 이름은 하고 네임 이라고 써 있죠. 당신의 이름은 이라는 문자열 출력하고 요. 그 다음에 띄어쓰기 한 번 하구요. 기본 9분자 띄어쓰기 입니다. 그리고 나서 네임에 값을 출력합니다. 네임에 값이 문제였죠. 그래서 문제의 리 그대로 출력이 되고 있어요. 그리고 나서 프린트 함수가 끝났기 때문에 기본값이 뭐라고 했죠. 줄바꿈이 라고 했죠. 그래서 줄이 한 번 바뀌는 겁니다. 그래놓고 나이 능과 a 지갑과 시력

08:00
음과 사이트 값이 각각 띄어쓰기 로 9분해서 입력이 되는 거죠. 이렇게 가장 기본적인 기본 출력 기본 입력 방식이다. 정도 알고 계시면 되겠습니다. 자 다음은 연산자 인데요. 연상 저는 여부도 적혀 있듯이 니 기존의 c 언어와 다른 연산자 말 다른 부분만 c 언어와 자바 는 거의 같고요. c 언어 자바 에 비해서 파이썬은 약간 다른 부분이 꽤 있어요. 이런 부분만 설명을 하겠다. 뜻이에요. 산술 연산자 입니다. 일반적인 산술 연산이 메 파이썬 전용 연상이 존재합니다. 여기 보면은 요. 부분이 줘 대부분 이렇게 3가지가 있는데 일단 나누기에 요. 나누기 같은 경우에 정수와 정성 정서와 실수를 나눔으로써 몫이 나모 나머지 또는 실제 나눗셈 이런 것들을 할 수 있다고 앞에서 말씀을 드렸는데 파이썬은 나누기는 그냥 무조건 결과가 쉴수 로 나옵니다. 얘가 정수 여권 뭐 여권 간이 그래서 목숨을 구하고 싶을 때는

09:01
역순 씬을 2번 쓰셔야 되요. 이게 목숨을 구하는 연산자 입니다. 나머진 똑같구요. 그 다음에 제곱 연산자가 따로 있어요. 이건희의 4 제곱 이란 뜻이에요. 이렇게 제곱을 할 수 있다. 이렇게 보시면 되겠습니다. 나머진 뭐 어려운 건 아니니까요. 그리고 연산자 우선순위 도 똑같이 들어 가는 거니까? 체크 라는 잘 해주실 필요가 있겠죠. 자 그리고 논리 비교 연산자 입니다. 다수의 놓인 데이터를 판단한다. 고 써 있죠. 파이썬은 하나의 데이터에 대한 두 개의 비교 연산을 동시에 처리할 수 있다고 되어 있습니다. 여기 적혀 있죠. 취 언어는 요기 안되요. 예를 들어서 a 와 b 가 같은지 그리고 b 와 c 가 같은지 이렇게 체크를 해야 되는데 여기서는 a 와 b 와 c 가 같은지 이렇게 체크할 수 있습니다. 파이썬을 특징이죠. 아래쪽도 마찬가지죠. a 가 영과 100 사이에 존재하는 질책하는 거에요. 만약에 이 부분을 c 언어 표현을 한다면 일단 n

10:01
요렇게 표현해야 됩니다. 이걸 일단 1차 간편하구요. 그 다음에 얘가 또 100이하 인지 체크를 해야 되구요. 둘다. 만족을 해야 되니까? 이렇게 묶어서 편하겠죠. 이런식으로요. 자 그런데 이걸 이렇게 간단하게 변할 수가 있다라는 겁니다. 이렇게 표현을 못하는 경우도 있는데요. 아래쪽 같은 경우죠. 1 값에 대한 2 범위를 비교하는게 아니라 죽은 값에 대한 2 범위를 비교 한다고 하면 각각 서로가 다른 데이터 범위를 가지고 있기 때문에 이럴 때는 같이 연결해서 할 수 없어요. 여기 보시면 엔가 70 보다. 크고 빈칸 70 보다. 큰 경우 입니다. 작은 여기엔 더 라고 써있죠. 요기 md 에요. 했는데 직접 밴드 라고 쓰면 됩니다. 훨씬 더 직관적이지 요. 5마일 같은 경우엔 요기 오악 입니다. 서로 9분할 수 있으면 되겠다. 라는 얘기죠. 다음으로 멤버 연산 입니다. 데이터가 특정 데이터에 포함되는 지

11:00
판단을 하는 연 한잔 되요. 여기다. 인 서 있죠. 라센 생략하는 한거구요. 일단 인 부터 보면 여기 있는게 여기에 존재한 야 이렇게 보는 겁니다. 자 그리고 얘는 여기에 있는게 여기에 존재 하지 않냐 를 물어보는 거죠. 포함 되지 않는지 포함 되는지를 확인하는 연산자 라고 보시면 됩니다. 고문 되죠. 넘어갈게요. 다음은 이번 포인트의 자료 구조 입니다. 전혀 구조가 조금 더 중요하다고 했었죠. 파이썬에서 는 시퀀스 자려고 저랑 맵핑 형 차려 고정 이렇게 두가지가 있는데 시퀀스를 먼저 보겠습니다. 훨씬 더 많이 나와요. 시퀀스는 하나의 식별자로 서로 다른 배열과 달라요. 서로 다른 타임에 여러가지 데이터를 관리할 수 있는 자료구조 하구요. 순서대로 나열되어 있기 때문에 인 백신과 순 아이싱을 통해서 데이터를 탐색할 수 있다고 되어 있습니다. 여기 시퀀스의 특징이에요. 순서대로 나열되어 있다. 시퀀스를 생성할 때 별도의 크기를

12:01
지정하지 않아도 됩니다. 이것도 동작이 줘 그러니까? 굉장히 코딩이 편해집니다. 어쨌든 대표적인 시퀀스 자리 구제는 리스트에 문자열 키폴 이런 것들이 있다. 라고 되어있구요. 각각 어떻게 표현하는지 제가 간단하게 적어 놨습니다. 리스트는 가변 형 이구요. q 푸른 불 병역 문자열 도 불 병입니다. 수정이 가능한지 불가능한지 를 체크하는 거구요. 어떻게 변하는지 는 나와있죠. 따옴표로 큰 다음회 후 자금 답 얘기하는 거죠. 따옴표를 표현하는 건 문자열 수 가로로 감싸 는거 중괄호 줘 감싸는 건 키풀 대가로 각진 과로로 감싸는 건 미스트 이렇게 보시면 됩니다. 자 그래서 안의 코드를 한번 보도록 하죠. 이 세계 중에 사신 제일 문제가 많이 나오는것은 리스트 입니다. 왜냐하면 미스트는 수정이 가능하기 때문에 여러 가지 형태로 문제를 출제할 수 가 있어요. 슈퍼 라고 문제의 른 한번 정해진 값이 기 때문에 뒤에 섭외 용이 될 인덱싱 이나 멋을 아이싱 할 때나 포함이 되는 거기 때문에 리스트를 조금 더 집중 해주시는게

13:01
좋습니다. 자 그래서 한번 보죠. 체 이라는 이름을 가진 리스트를 1 만든 겁니다. 대가로 들어갔죠. 불고기 콤마 비빔밥 서있어요. 불고기와 뒤 김밥 문자 열이 저장되어 있는 리스트가 만들어진 거예요. 그리고 씨라는 리스트도 만들었는데 여기에는 짜장과 짬뽕이 들어가 있죠. 자 그러고 나서 a 라는 미스트를 만드는데 이 안에 k 와 시 에 해당하는 데이터를 집어넣고 있죠. 그런데 k 와 시가 리스트 잖아요. 결국 애니라는 리스트는 내부의 리스트가 2개가 더 있는거예요. 그래서 이거를 각각 출력을 해보면 이렇게 써 있는 그대로 나오구요. 여기 안 있는 데이터가 이렇게 안쪽으로 들어가는 형태로 진행이 됩니다. 대가로 나와 잇는거 체크를 잘 해주셔야 됩니다. 코드가 생각보다. 직관적 이라서 어렵지 않을 겁니다. 다음은 인덱싱 문제의 굉장히 많이 나오는 효소적 첨 짤을 이용해서 배열 처럼 접근할 수 있는 기술인데 시

14:00
언어처럼 0 부터 시작해요. 0부터 그리고 5 축 방향으로 진행을 하구요. 만약에 역순으로 진행을 하고 싶을 때는 - 1부터 시작해서 점점 감소를 시키면 됩니다. 예를 들어 문자열이 파이썬 메이킹 표 라는 문제가 있다고 했을 때 맨처음 값은 0부터 시작해서 있니 3사 이렇게 드러나는 거구요. 만약에 역순으로 탐색을 하고 싶다. 라고 하면 - 1부터 시작해서 점점 점점 줄어드는 느낌으로 접근을 하시면 되겠다. 라는 겁니다. 여기까진 이 봐 주시면 되고 예시 코드를 한번 보면 헬로 월드 파이썬 이라는 문자열 있죠. 자 그럼 여기는 hello 5 피어스 깊이 yth 고갱 까지 해서 총 열 두 글자가 존재하는 거에요. 이 상태에서 s02 라고 쓰게 되면 말 그대로 0번째 글자 h 에 해당하는 거구요. 사라고 하면 0 1 2 3 4 라고

15:00
해서 오해 해당하는 부분입니다. 자 그리고 이렇게 조개를 출력할 때 중간에 해 to 쓰기가 되어 있어야겠죠. 9분자 가 기본이 뛰어 쓰니까? 자 그리고 프린트 암스 같은 경우에 이번에 역순 이 줘 - 생기면 은 앤 이구요. - 사면 - 1 - 2 - 3 - 4 치 에 해당합니다. 그래서 요렇게 출력이 되는 거겠죠. 이런식으로 데이터를 하나하나 참조할 수 있는 걸 인덱스 라고 이야기를 한다. 라는 거구요. 다음은 슬라이스 입니다. 방금처럼 한국의 가 아니라 특정 구간에 있는 데이터를 추출하고 싶을 때 참조 하고 싶을 때 사용 합니다. 실제로 추출한다. 고원 보니 사라지지 않습니다. 한번 보면 시퀀스 명 쓰구요. 대괄호 안에 땡땡 으로 9분해서 첨 전을 총 3가지 놓습니다. 시작 종료 단계 값이라고 되었는데 단계 값은 생략이 가능해요. 생략을 하게 되면 은 기본적으로 지정된 값이 있습니다. 여기에 나와있죠.

16:03
시작 첨 절을 생략하면 첫 번째 요소 부터 란 뜻이 되는거구요. 종료 첨자 를 생략하면 마지막 요소까지 라는 많이 되구요. 단계 값을 생략하면 일이 기본값입니다. 이루어지게 되면 이 씩 증가 하면서 뭔가 진행이 되겠죠. 이렇게 보시면 되고 종료 첨자 의 값이 시퀀싱 길이보다. 큰 경우 예를 들어서 5글자 인데 50 이라고 쓴 경우 이런 느낌이죠. 이러면 알아서 마지막 하지만 슨 아이싱을 해주고 멈춘다. 라고 되어있구요. 단계 값이 만약에 - 기가 챔 음순을 경우에는 슬라이 싱 을 역순으로 한다. 라고 까지 대학이 있습니다. 욕까지 판단해 주시면 되요. 자 그래서 이 부분을 코드로 또 한번 확인을 해보죠. 아까랑 똑같은 헬로 파이썬 문자를 가지고 한번 보겠습니다. s 는 식권 10명 이니까요. 이번 주고요. 어쨌든 중요한 건 6부터 10가지만 뜻이에요. 그런데 해석을 할 때에 6부터 10가지 라고 보면 안 되며 6부터

17:05
쉽 전까지 라고 보셔야 되요. 항상 이 마지막 참자 전까지 하는 겁니다. 그러니까? 실질적으로 는 6부터 9까지 란 뜻이에요. 이해 되시죠. 자 그리고 얘는 - 이라고 되어있죠. - 1부터 비어 있어요. 끝까지 라는 소리에요. 자 그리고 요. 부분 자의 것 같은 경우에는 처음 이 생략이 되어 있잖아요. 그러니까? 당연히 처음부터 겠죠. 그리고 오전까지 니까? 네번째 걸자 까지 이란 뜻이 됩니다. 자 그리고 6 땡 땡 하고 빈칸이 줘 이거는 마지막까지 이런 뜻이에요. 끝까지 라고 되어있죠. 그러면 6 부터 시작해서 끝까지 이렇게 해서 번 하시면 되겠다. 라는 거죠. 자 그럼 다음 아래쪽도 보겠습니다. 자 존자 비어 있네요. 그러면 당연히

18:00
처음부터 끝까지 줘 이렇게 해석을 하시면 되고 그런데 - 게임 이라고 되어 있으니까? 거꾸로 출력을 한다. 이렇게 보시면 되겠습니다. 자 그래서 맨 처음에 6 뺑뺑 10원 6부터 9까지 라고 있잖아요. 그래서 얘가 여섯번 째입니다. 0 1 2 3 4 5 6이 예요. 생애가 6번째 에요. 여기서부터 9번째 걸자 까지요. 만큼 이 줘 요렇게 출력이 되고 있는 거구요. 그 다음에 - 이 같은 경우에는 애가 - 입니다. 그러니까? 얘가 - 이겠죠. 2 5 부터 시작해서 흘 까지 출력한다. 하니까? 오행이 되는거구요. 그 다음에 이 부분 볼게요. 처음부터 다섯번째 전에 번째 글자 까지 줘 그러면 0 1 2 3 4 해서 헬로우 를 출력합니다. 자 그리고 9분 제 쉼표 들어갔죠.

19:01
띄어쓰기 한 번 하구요. 여섯 번째 p 부터 시작해서 u 만큼 을 출력하고 있는거예요. 그래서 결과가 이 띄어쓰기는 같이 출력을 한 것 같지만 띄어쓰기는 제외하구요. 출력을 할 때 다시 뛰어 쓰니까? 붙은 겁니다. 이거 판단을 잘 해주셔야 되요. 그리고 아래쪽에는 한번 전문 출력하는 것이다. 전부 출력을 확인하는데 꺼꾸로 출력을 하고 있죠. 이렇게 슬라이 싱 을 9분해 주시면 됩니다. 수나 2심은 실제로 결과가 어떻게 나오는지 어떻게 출력되는 지 어떻게 뽑히는 g 이 부분을 확인할 수 있어야 되요. 다음은 리스트 관련 함수 입니다. 미 스텐 가변 형식화 시기 때문에 미스트를 수정할 수 있는 다양한 함수가 존재를 하는데 일단 기본적으로 3개 정도는 알고 있어야 되요. 어펜드 는 마지막 위치에 마지막에 데이터를 갖다. 붙이는 거구요. 익스텐드 는 자료구조의 요소를 분해해 해요. 예를 들면 우리가 리스트를 배웠으니까? 리스트에 예를 들어 쉽

20:01
지식 32 적혀 있었다고 생각을 해 볼게요. 이렇게 하고 익 스탠드에 요걸 집어넣게 되면 이 리스트 자체가 추가되는 게 아니라 여기 안에 있는 10과 20과 32 각각 추가가 된다. 이렇게 보시면 됩니다. 다음에 인설 트는 데 인턴을 추가를 하는건 맞는데 특정 위치에 내가 원하는 위치에 집어넣을 수 있다. 이렇게 차이가 있다고 보시면 되요. 자 마찬가지 또 코드를 봐야겠죠. 일단 빈 리스트를 추가 하고 있죠. 한번 추가를 해 볼까요. 이 위쪽에 다가 추가를 해 볼게요. 이렇게 빈 리스트를 1 추가를 했습니다. 자 그리고 나서 어펜드 일이라고 대형 있죠. 첫번째 위치 제일 마지막 위치가 맞지만 아무것도 없기 때문에 첫 번째 위치에 1 2 추가가 될 거에요. 자 그리고 이 상태에서 팬들을 한번 더 하죠. 여기에 리스트 안에 있는 요소가 아니라 리스트 자체가 추가됩니다. 그래서 쉼표 아고 다시 바로 하고

21:01
이렇게 적어 줘야 되요. 자 그러면 여기 안에 있는걸 분해 에서 집어 넣는 건 멀쩡히 익스텐드 였죠. 2 스탠드 를 이용하면 4 콤마 녹아들어 있는 리스트가 아니라 일이 스텐 요소를 빼서 하나하나 집어 넣습니다. 그러니까? 쉼표 4 쉼표 5 5 5 이렇게 되는 거죠. 다음 이 상태에서 인수 하차합니다. 두 번째 위치에 영월지원 이란 뜻이에요. 두번째 라는 것은 0부터 시작했을 때 두 번째는 얘기하는 거죠. 그러니까? 얘가 0 이구요. 얘가 일이구요. 얘 까이고 우리가 3입니다. 그러니까? 이 위치에 영을 집어넣고 요. 나머지 부분은 오른쪽으로 밀란은 소립니다. 자 그러면 얘들은 요렇게 밀리 구요. 이 쭉 데이터의 영이 추가되는 형태가 되는 거죠. 자 그래서 실제 결과가 이런식으로 이런식으로 나타난다. 라고 보시면 되겠습니다.

22:00
대충 어떤 느낌인지 아시겠죠. 항상 배열 이라든지 이런 첨자 를 건드릴 때 는 0부터 시작한다는 부분을 계속 머리쪽에 담아 두고 공부를 하셔야 되요. 실수 굉장히 찾아줍니다. 자 그리고 아래쪽에는 써있지만 조심해야 될 부분 리스트 요렇게 전체 요렇게 하나가 위치 하나를 잡아 먹는 겁니다. 이해하고 사람이 별도로 잡아 먹는게 아니에요. 고거 생각을 잘 해주셔야 되요. 사람은 데이터를 추가하는 게 아니라 리스트 요소를 추출하거나 삭제하는 함수 입니다. 다양하죠. 하나씩 보도록 하죠. 일단 인덱스 데이터 라고 써있으면 이 데이터를 검색해서 해당 위치가 몇 번째 인지 를 반환합니다. 대신에 데이터가 없을 경우엔 오류가 난다고 등이 있죠. 다음이 무 부 데이터를 검색해서 해당 데이터의 첫 번째 요소를 삭제 해요. 데이터를 검색할 때 두 가지 있을 수 있죠. 홍길동 을 검색했을 때 홍길동 의 여러 명일 수 있잖아요. 그 중에

23:00
가장 첫번째 온길 도 만나자마자 처음 만난 확률 또는 삭제합니다. 이렇게 해서 번 하시면 됩니다. 자 그리고 벨 이라는 명령어를 사용할 수도 있어요. 대응하고 리스트 하고요. 위치 적어 주게 되면 해당 위치에 저장된 요소를 삭제한다. 고 되어 있어요. 요거 까지 봐주시면 됩니다. 자 그리고 리스트 팝 이라고 되어 있습니다. 자 이거는 삭제 랑 비슷한 개념인데 삭제 랑 다른점이 뭐냐면 6위 조인은 대리 줘 요거랑 다른점이 뭐냐면 데는 말 그대로 삭제한 하는거구요. 팝 은 데이터 늘 뽑아서 내가 원하는 대로 사용할 수가 있어요. 리스트에서 삭제되는 것은 똑같지만 이 뽑아 운 데이터를 쓸 수 있냐 없냐 의 차이가 합과 딜리트 의 명령어 의 차이라고 보시면 됩니다. 아시겠죠. 자우 추가 지가 특징이 있다. 라는 거고 그다음에 카운트는 리스트 내에 이제 이 터가 몇 개 있는지를

24:00
판단하는 거구요. 클리어는 리스트 내부의 모든 요소를 삭제 하는 겁니다. 리스트 자체가 삭제 되는 건 안 달아 이렇게까지 봐 주시면 되겠네요. 자 이거 또는 코드가 있습니다. 아까와 마찬가지로 빈 리스트를 하나 추가 라구요. 그 다음에 헬로 파이썬 이라는 문자열을 11111 문자 단위로 쪼개서 추가를 합니다. 이런식으로 추가가 되는 거죠. 이 상태에서 이거 에리의 요. 애들 검색해서 삭제를 합니다. 자 그러면 용이 에서 가장 먼저 발견되는 엘은 u 놈이죠. 그래서 이 놈이 삭제가 되는 거에요. 자 그래놓고 s 리스트에 p 에 해당하는 값을 찾아서 그 위치를 출력하려고 되어 있어요. 피낭 여기죠. 이 부분에 삭제 됐기 때문에 0 1 2 3 4 뵙길 소개되어 있어요. 5 해서 결과가 5 가 나온다. 라는

25:01
거구요. 다음에 s 점 pop 5 라고 되어 있습니다. 이거는 방금 바 터이 피를 뽑아서 없앤 다음에 이 뽑은 걸 출력의 사용하겠다는 뜻이에요. 작은 해서 피가 실력이 되고 있죠. 다음 s 를 출력하게 되면 없어진 l 과 없어진 피를 반영한 요. 문자열이 출력이 될 거다. 라는 거죠. 원래 요사이 의 애니 하나 있었어요. 귀천 그리고 u 사이에 피가 있었죠. 자 그럼 게임 두가지가 리무 부와 팝의 의해서 없어진 상태에요. 여기까지 파악을 하시면 되겠습니다. 다음입니다. 자 이스트는 가변형 이기 때문에 데이터 이동이 가능해서 정년을 하거나 반전을 시킬 수 있다고 되어 있습니다. 자 그래서 다양하게 있죠. 일단 소트 가 오름차순 정렬을 하는거구요. 소스를 했는데 립 어스 는 트루아 메인 주 를 입력하게 되면

26:00
내림차순으로 정렬을 하게 됩니다. 다음에 리버스 라고 되어있는 부분은 요소의 순서를 반전시키는 거에요. 하이 뒤집는 거죠. 자 이런 것들은 실제 원본이 변형이 된 상태에요. 만약에 원본 을 유지하고 싶을 때는 사본을 만들어서 정열을 하거나 반전을 시키는게 좋다. 라고 되어 있죠. 자 소치 드가 있고 쏘티 드 추로 리버스 초를 좀 있습니다. 사본을 만들어서 오름차순 정렬 4번을 만들어서 내린 자선 정렬 얘네들은 원본이 바뀌고 요. 얘네들은 사본이 바뀐다. 이렇게 생각하시면 되겠죠. 다음으로 맵핑 형 자료 구조 입니다. 맵핑 형은 하나의 식별 현호 서로 다른 타입의 다수 데이터를 관리할 수 있는건데 중요한 건 순서가 없다는 거에요. 순서가 없기 때문에 인덱싱 불가능합니다. 그래서 맵핑 되어 있는 데이터에 접근하는 방식이 이 키 값을 별도로 이용하는 거에요.

27:00
특정 숫자 첨자 이런 것들이 아니라 특정 키값을 내가 지정해서 해당 키 값과 동일한 데이터를 가지고 온다. 이렇게 생각하시면 됩니다. 대표적인게 매핑 경찰이 구조 중에 딕셔너리 라는게 있어요. 딕셔너리 는 사전처럼 키와 값의 쌍으로 구성된 데이터 입니다. 중 괄호로 표현할 수 있구요. 데이터의 수정 삽입 삭제가 자유롭다. 가변 형이 줘 키 값이 존재하는 경우에는 값을 참조 하구요. 없는 경우에는 채로 데이터를 생성 한다. 라고 되어 있죠. 이것도 코드를 보면 금방 이해가 되요. 코드를 보면 은 이 코드의 형태만 봐도 아 얘 얘가 지금 어떤 자료형이 나라는 걸 알수 있어야 되요. 예를 들어 대가로 가서 있으며 는 얘가 지금 리스트에 구나 그냥 과로 메는 체크 이구나 그 다음에 중괄호 면은 딕셔너리 거나 이런것들을 파악할 수 있어야 되는 거죠. 큰 따옴표를 문자열 자 그래서 딕셔너리 구절을 보니까?

28:00
요. 오뎅 콜론 을 기준으로 왼쪽과 오른쪽 데이터가 있어요. 이 왼쪽 익힙니다. 값이 야키 깍 그리고 얘가 실재 데이 탑니다. 배 및 자 그래서 네임 이라는 키 탓을 가지고 있는 파이썬 문자열 데이터 이렇게 생각하시면 되죠. 그리고 ag 라는 키 값을 가지고 있는 정수형 데이터 이렇게 생각하시면 되겠죠. 자 그래서 접근은 중가 럼 하지 않고 똑같이 배열이나 리스트 처럼 대괄호 를 이용하는데 배 신행 숫자가 아니라 키값이 들어가죠. 사이트 라고 되어 있습니다. 사이트 라는 키값이 없어요. 그러면 사이트 라는 키 값과 1.5 나는 데이터를 집어 넣어서 새러 추가합니다. 데이터를 생성 한다구요. 자 그런데 지금처럼 있는 경우에는 해당 데이터를 바꾸는 겁니다. 22 없어지고 3 심 으로 바뀝니다. 자 그래서 이 부분을 자 출력을 하게 되면은 요렇게 나온다는 거죠. ng 컷이 바뀌었고 사이트 값이 세로축 안했죠. 이런 식으로 할 수 있다. 굉장히

29:00
간단하죠. 다듬어 들에 비해서 다음은 딕셔너리 관련 함수 입니다. 어렵지 않아요. 이것도 딕셔너리 점 튀지 이렇게 적게 되면 딕셔너리 에 저장된 키 값만 별도로 추출할 수가 있고요. 밴드 주라고 하면 데이터 값만 별도로 추출할 수 있고 아이템 지 라고 하면 키와 데이터 쌍을 이루는 피플의 형태 노출 명을 한다. 라고 되어 있어요. 예를 들면 이렇게 생기는 거죠. 페이지 콤마 20 요렇게 하고 마찬가지죠. 공지도 4인 am 꽃말 다음 턴 평생 있어야겠죠. 아까? 큰 탄 패딩 있었죠. 네임 하고 여기 홍길동 이런식으로 적힌 은 이런 형태로 구성이 되는게 아이템 즈 자 그리고 딕셔너리 점 겟 하고 석희 콤마 기본값 이렇게 써 있죠. 키 값과 대응되는 데이터를 반환한다. 만약 잃지 않은 키가 없을 경우에 기본값을 발한

30:03
시킨다. 라고 되어있어요. 이런식으로 너무 표현이 가능하다. 이렇게 보시면 되겠습니다. 넘어가 볼게요. 다음은 제어문 입니다. 선택지 함은 나와있는데 c 언어 자바 보다. 훨씬 더 간단합니다. 형식만 잘 맞추시면 되요. 그리고 파이썬은 중간 5가 아니라 드디어 쓰기로 구역을 9분해 요. 부분을 체크를 잘 해주셔야 됩니다. 하위 영역인 필요한 문에는 콜론 을 사용한다고 되어 있고요. 들여쓰기 레벨이 같은 코드는 띄어쓰기를 한 번 했는지 두번째는 진행에 대해서 같은 코드는 동일한 영역에 있다고 판단한다. 고 되어 있죠. 자 그래서 인품을 보면 이프 l 스 이프 가 아니라 그냥 af 그 다음에 에센스 이런식으로 들어갑니다. 조건식 은 똑같이 들어가는데 괄호가 없고요. 콜린이 들어가죠. 자 여기까지 입니다. 지금 콜로니 2개 있는데 이거는 이 설명 때문에 역을 설명 때문에

31:00
너는 거구요. 요렇게 까지가 이 포문 이라고 보시면 되요. 주어진 조건식 첨 인 경우에 조건식 거짓이고 앤 이프 문의 조건식 이참 인 경우에 모든 조건 c 거짓인 경우에 이렇게 되어 있습니다. 코드 한번 볼까요. 벤 수를 2개 생성 하고요. 그 변수에 해당하는 기준 식을 적어 놓습니다. 자 그래놓고 콜론 들어가 있죠. 그러면 아래쪽에 2% 에 해당하는 영역이 있구나 이렇게 생각하시면 되요. 자 그래서 a 가 b 보다. 큰 경우에는 외관 수행 되구요. 그렇지 않고 a b 가 같은 경우에는 예가 수행 되구요. 이것도 아닌 경우에는 애가 수행되는 이런 형태로 들어갑니다. 중간 없어요. 그 다음에 콜론 으로 마무리 합니다. 이거 조건 시기에도 과로가 없죠. 체크를 잘 해주세요. 시원한 다릅니다. 다음은 반복 제어문 이에요. 스위치 케이스 는 이런 게 없어요. 반복 체험은 홈과 와 1 문추 가지가 있는데 홈 운도 좀 간단합니다. 지정한 데이터 구조를 자려고 줘 순환하면서 요소마다. 반복 구역에

32:02
코드를 반복한다고 되어 있어요. 데이터 구조 요소들을 할당할 반 봉명 변수가 필요하다. 라고 되어있구요. 기본형 시간 요렇습니다. 폭 회원수 인 시퀀스 이렇게 식권 씩 요소들을 하나하나 이 변수에 할당 하면서 반복이 수행 되는거예요. 그리고 이전 거 틀과 마찬가지로 컨티뉴 와 브레이커 사용이 가능하다. 라고 되어있죠. 코드를 한번 볼게요. 리스트를 a 가 생성되어 있고요. 여기 안에는 12 13 20 이라는 값이 들어 있어요. 이 이스트가 포 문의 요. 자리에 들어갔습니다. 자 그러면 이 포문 의 뜻은 뭐냐면 a 에 있는 요소를 11i 의 집어넣으면서 10원 넣을 때마다. 예를 반복해 주세요. 란 뜻이에요. 그래서 변수 i 에 12 들어갔을 때 한 번 맘보 22 들어갔을 때 한 번 반복 그 다음에 32 들어갔을 때 한번 더 반복

33:01
이렇게 한다는 뜻이에요. 그러니까? 시퀀스 안에 있는 요소 개수만큼 반복 을 한다. 이렇게 보시면 되겠죠. 떨지 않습니다. 제 이렇게 그리고 & 내게 면서 를 통해서 아래쪽으로 출력이 되는게 아니라 엔터가 쳐지는 게 아니라 띄어쓰기 로 9분할 수 있게끔 프린트의 함수를 사용했다는 점도 파악을 잘 해주셔야 되요. 실제로 이 엔드 가 있냐 없냐 에 따라서 여러분들이 실기 같은 내에서 값을 입력할 때 이렇게 입력을 해야 되는지 또는 n 이렇게 입력을 해야 하는지 이건 확실하게 9분을 할 줄 아셔야 되요. 아셨죠. 여기까지 보고 다음으로 넘어갈게요. 이포 문에는 무조건 시퀀스를 쓰는게 아니라 단순히 어떤 숫자를 반복해야 되는 경우에 리스트 를 생성하고 그걸 다시 쓰고 하면 좀 번거롭지 않아요. 그래서 레인지 라는 함수를 이용해서 불변 형 시퀀스는 제작할 수 있습니다. 형식은 이렇게 생겼는데요.

34:02
시작 값과 종료 깍 증가 캅스 를 통해서 시작가 부터 종료 꽈 바로 전까지 항상 종료 값 전까지 줘 조심하셔야 되요. 전까지 증가하는 정수 시퀀스 가 생성이 된다. 증가 아깝 꽈 시작 값은 생략이 가능하구요. 지분 값에는 일과 영이라고 대형 있어요. 자 이 부분을 코드를 보면서 또 같이 보도록 하죠. 호호 아이인 하고 시퀀스가 아니라 레인지 1절 쓰고 있죠. 레인지 함수의 결과가 시퀀스 라고 생각하시면 되요. 정확하게는 인터넷이 터인데 시퀀스 라고 생각하시면 됩니다. 아 어찌됐건 일부터 7 전까지 그러니까? 1부터 6까지 라고 생각하시면 됩니다. 1부터 6까지 이식 증가 하라고 되어 있어요. 그러면 님 꽃가지 줘 실은 6을 넘어가니까? 요. 그래서 일삼고 가 저장되어 있는 정수 시퀀스가

35:01
생성이 되고요. 135 가 여기에 하나씩 들어가면서 반복을 합니다. 그러니까? 출력이 1사 뭐가 되는 거죠. 이해 되시죠. 자 그래놓고 여기서는 레인지 12 라고 되어있어요. 시작하 꽈 당 개 값인 이 생략되어 있는 거예요. 그래서 장기의 내 생략하면 일이구요. 시작 을 생략하면 0 이기 때문에 0부터 시위 전까지 그러니까? 0부터 9까지 줘 이 부분을 출력을 하고 있는 겁니다. 자 그리고 인출을 2개만 적게 되면 단기 값을 생각하게 되는 거거든요. 그러면 5부터 8 전까지 입니다. 그러니까? 5 부터 7 까지 줘 그래서 5 6 7이 출력이 되는 거구요. 그리고 5부터 1 이전까지 인식 반복 여기서 1 이전 이라는건 영이 아니라 우리가 감소 할 거니까요. 이 줘 5 부터 2까지 1씩 감소하면서 반복을 한다. 에 그렇게 봐주시면 됩니다.

36:00
자 9분 되시죠. 그리고 여기 중간중간 보시면 아무것도 안 써 있는 프린트를 함수가 있죠. 얘네들 n 줄바꿈 의 역할을 해줄 수 있어요. 여기 위해 보시면은 & 를 다. 빈칸으로 바꿔서 줄바꿈을 못하게 해 나거든요. 이 중간중간 프린트가 없었으면 이 모든 숫자가 한준희 축 적혀 있었을 거예요. 이런 부분도 디테일하게 체크를 해 주실 수 있으셔야 됩니다. 다음은 와 1 문입니다. 와인 포문 처럼 특정 횟수나 데이터에 갯수 등을 지정하지 않고 반복이 기준을 정해서 진행되는 반복문 이에요. 초 깡 식을 이용해서 한복에 기준을 정할 수가 있구요. 조건식 의 결과가 참인 동안 반복이 수행 된다고 되어 있습니다. 자 그래서 아래쪽에 와 1 문을 보면 투로 라고 적어 놨어요. 이거 기억나시나요. 루프 무한 반복을 구매할 때 파이썬 에서는 이렇게 적는다. 고 했었습니다. 아 참고로 복습을 해 보자면 시 원하는 이렇게 적어야 되구요. 일이에요.

37:00
그 다음에 자바는 트루 라고 적어야 된다고 말씀드렸죠. 자료 오즈 현재 무한 반복을 하고 있는 상태에요. 그리고 섬의 시인 t 값을 부적하고 있고요. 만약에 썽 이 100보다. 커지면 와 1 문을 종료 한다. 라고 되어 있는 거고 그렇지 않고 넘어 갔을 경우에는 cmd 값을 계속 1씩 증가 를 시키고 있다. 이렇게 보시면 됩니다. 여기까지 보고 넘어가도록 하죠. 반복문 항상 패턴 파악이 우선 이기도 하구요. 여기서는 그렇게 복잡한 부분이 아니고 우리가 와 1 문을 밖에서도 봤기 때문에 가볍게 보고 넘어가겠습니다. 사용을 함수입니다. 함 시에 특징은 함수와 메소드의 개념의 차이가 없지만 일반적으로 외부에서 점이 되는 것을 함수 클래스 내부에서 정리되는 것을 메쏘드 라고 9분을 하는 경우가 있습니다. 시험에 나오는 건 아니에요. 내장된 함수를 불러와서 사용하는 경우에는 임포트 키워드를 사용한다고

38:01
되어 이 줘 이런식으로 용 a c 언어에서 보시면은 # 링컨 로드 에 해당한다고 보시면 됩니다. 3세 의 정의는 def 키워드를 사용하며 들여쓰기 로 9분해서 내부 코드를 설계하면 된다. 함수 정리 의 마지막 줄에는 빈 준 을 추가해서 자른 함수와 9분된 수 있도록 한다. 여기에 기본적인 형식입니다. 중 가루가 없는 대신에 자 그래서 대폭 키워드가 있으며 는 아 여기서 여기까지가 함수 에 해당한다. 라고 생각하시면 되겠죠. 멀티 라는 이름의 함수에 구요. 넘 이라는 매개 변수를 가지고 있습니다. 자 그래서 멀티 를 호출할때 지정된 인수가 요넘 에 저장이 되는 거구요. 이넘을 2배 하는 거죠. 그래놓고 다시 되돌려 줍니다. 리턴 타입 또 없어요. 자 그러면 이 5대 돔 요즘 값이 여기에 도착을 하는거구요. 그 값이 알이 s 에 들어가는 거구요. 라이 s 에 저장된

39:00
값이 출력되는 이런 형태가 되는 겁니다. 이심을 입력해 구요. 그 다음에 42 출력되는 2매 니까요. 이렇게 들어간다는 거죠. 지금 여기서는 편의상 정소 입력 프롬프트를 출력하지 않았어요. 7 제로 입력하는 입력 값은 20분 이기 때문에 이렇게 표현을 했는데 실제로는 정수 입력이 떠 있어야 되는게 맞습니다. 하지만 우리는 시험 볼 때 입력이 아니라 결과값이 어떤지를 보통 물어보기 때문에 큰 상관은 없어요. 넘어 갈게요. 다음은 객체지향 프로그래밍 입니다. 파이썬은 객체지향 스크립트 언어라고 하는 표현이 정확하지 요. 그래서 객체지향 프로그래밍 도 가능합니다. 자바에서 처럼 다양한 기능을 수행할 수가 있는데 훨씬 더 문 법은 간단해요. 천천히 보조 일단 클릭스 키워드를 이용하는 것도 같구요. 인스턴스 를 생성할 때 뉴 키워드 없이 클래스 의 명 만으로 생성이 가능합니다. 뉴 클래식 카

40:01
이렇게 쓸 필요가 없다는 거죠. 자 그리고 메소드의 정의와 호출 한번 볼게요. 외부에서 정의된 함수 이것과 달리 클래스 내부에 정의된 은 것은 이제는 일단 메쏘드 라고 한다. 는 거구요. 함수와 다르게 첫 번째 매개변수가 셀프로 기본적으로 지정이 되요. 이건 무조건 지정을 해야 됩니다. 이 샴푸가 자바에서는 디스 에 해당하는 부분이에요. 9분이 되시죠. 그리고 클래스 내에서 정의된 메소드 는 인스턴스 를 통해서 호출이 된다. 이렇게 알고 계시면 되겠습니다. 코드를 한번 볼까요. 크게 어려운 부분은 아닌데 일단 클래스가 구형이 되고 있습니다. 이름이 클래식 하구요. 이거 들여쓰기를 통해서 여기까지가 클래스 자라는 걸 알 수가 있죠. 그리고 바로 클래스 내부에 드라이버 라는 메소드를 구현하고 있어요. 매개변수는 기본적으로 셀프 가 저장되어 있어야 됩니다. 다음으로 프린트 수동 운전 모드 이렇게 출력을 하고 있죠.

41:00
이렇게 구현해 놓은 상태에서 파더 라는 변수에 클릭할 인스턴스 를 생성해서 집어넣고 있구요. 이 파우더 인스턴스의 드라이브 메소드를 호출하고 있죠. 자 그런데 호출 할 때 이 셀프 메소드 에 대한 어떤 값을 집어 넣는게 아니라 그냥 무시합니다. 느낌이 적혀있죠. 호출할 때는 무시한다고 이 부분까지 유의해서 이해를 해 주시면 되겠습니다. 자 그래서 이 셀프 에 대해서 조금 더 자세하게 아래쪽에 나와있는데요. 우리가 자바를 공부하고 바로 넘어왔다. 고 하면 여기에 어떤 개념 인지 감이 오실 거에요. 일단 읽어보자 참조 변성을 통해서 호출되는 메소드는 자기 자신이 기본 인수로 지정된 다고 되어 있고요. 쌤플 키워드를 통해서 멤버 변수 및 멤버 매수 d 에 접근할 수 있다고 되겠습니다. 클래스 외부에서 내무 인스턴스 변수에 접근할 때는 참 주변 수가 샘플의 역할을 대신한다고 되어 있어요. 한번 보도록 하죠. 자 아래쪽에 있는

42:02
이 코드를 위에 다. 갖다. 붙인 건데요. 실제로 이런 식으로 써 있다고 생각하고 접근을 하시는게 좋겠죠. 보도록 하겠습니다. 자 일단은 순서대로 접근을 해 보도록 할게요. 위쪽에 있는 것은 말 그대로 클래스 인스턴스가 생성될 때 봐야 되는 거니까? 이 검토 뭐죠. 빠다. 변수를 생성을 하면서 클래식카 랑 인스턴스 를 생성한 하고 있죠. 흥 식 하양 인스턴스 를 생성을 하게 되면은 일단은 컬러 값인 이 빨간색 으로 지정되어 있는 상태로 생성이 되는 거에요. 자 그러면 이 상태에서 하더 점 테스트에 메소드를 호출하게 되면 요런 테스트에 메소드가 호출이 되겠죠. 자 그런데 이 테스트의 메소드가 호출될 때 순서를 보세요. 일단은 컬러라는 지역변수 를 생성합니다. 2 테스트 지역의 컬러에요. 그리고 파란색 이라고 기록을 하고 있죠. 그래놓고 프린트하고 컬러는 하고 2컬러 부분을 출력하고 있어요. 이 컬러가 현재 지판

43:01
안 생기죠. 그렇기 때문에 결과가 컬러는 파란색 이렇게 나오는 거에요. 여기까지가 요부분 문자열입니다. 이문제 열과 이 컬러의 문장 열이 출력되고 있는 거예요. 자 이렇게 대응에 상태에서 그 다음에 또 뭘 출력하고 있죠. 셀 프 점 컬러는 이라는 문자열을 출력하고 요. 다음에 쉘프 전 컬러 이거는 나 자신의 클래스에 란 뜻이에요. 요놈 입니다. 념을 출력하고 있는 거죠. 쉘프 를 붙이게 되면 은 내일 지역이 아니라 내가 속해 있는 클래스 내가 속해 있는 인스턴스 를 지칭하는 거다. 이렇게 생각하시면 되요. 그렇기 때문에 파란색 빨간색 요렇게 나온다는 거죠. 자 그리고 나서 그리고 나서 파우더 어쩜 컬러는 검은색이 라고 베어 있어요. 자 그러면 이 파우더 라는 인스턴스 아니 있는 컬러 값을 바꿀 아닌데 얘는

44:01
내부적으로 들어가면 결국에 셀프 에 해당하는 부분입니다. 그래서 셀프 점 컬러와 같은 의미에요. 하지만 외부의 있으니까? 이 인스턴스의 명을 쓰는거구요. 인스턴스 의 명으로 접근 안건 결국에 셀프 를 찍고 잡고 난 거 말 똑같은 의미를 가집니다. 그렇기 때문에 요. 빨간 색이 검은 색으로 바뀌어요. 그래서 출력을 하게 되면 파란색은 그대로 출력이 되구요. 빨간색 뿐만 검은색 으로 바뀌게 되죠. 샘플을 붙이고 안붙이고 자바에서 디시 를 붙이고 안붙이고 요. 9분을 잘 해주셔야 되요. 아시겠죠. 반모 할게요. 자 파이썬에서 노 생성자와 메소드가 있습니다. 파이썬의 생성자 메소드 는 이미 정의되어 있는 이름이 있어요. 클래스 명과 동일하게 쓴다. 이라는 개념이 아니라 이렇게 씁니다. 여기에 생성자와 메소드를 구현하는 기본적인 문법 이에요. 언더바 2번입니다. 언더와 2번 in it 언더바 2번 하고요. 셀프 까지 하는 이런 형제 요기 생성자

45:01
메소드 입니다. 자 그래서 마찬가지로 생성자 메소드 는 인스턴스 생성시 자동으로 호출되고 임의로 호출 할 수 없구요. 생성자 메소드 와 샘플 을 이용하면 인스턴스의 변수 생성과 동시에 값을 할당할 수 있다. 라고 되어 있죠. 여기 이렇게 써 있습니다. 자 해석을 하자면 어 생성자를 호출할 당시에 이 부분이죠. 컬러 에 해당하는 값을 1 입력 받아야 된다. 며 샘플은 무시하라 그렇죠. 얘기 구요. 입력받은 이 컬러 값을 인스턴스 변수 컬러의 집어 넣겠다는 거에요. 자 그런데 지금 보면 이 셀프 점 컬러의 해당하는 부분이 아예 없죠. 정리가 안 되어 있잖아요. 하지만 이렇게 입력을 하게 되면 그때 정의가 됩니다. 이게 동적 타이핑 에 아주 장점 이거든요. 셀 프 컬러가 없지만 파이썬에서 는 쓰는 순간 정의가 되요. 부분을 잘 해 주시기 바랍니다.

46:00
튀어 너랑 잡아 랑 좀 헷갈리는 부분이 있어요. 자 그리고 테스트라는 매수 도 마찬가지죠. 쌤플 점 컬러 이미 객체를 생성할 때 샌포드 천 컬러라고 해서 컬러라는 인스턴스 변수를 생성할 했기 때문에 여기서는 이미 생성된 컬러 값을 출력할 수가 있는 겁니다. 순서를 잘 보셔야 되요. 자유 종로까지 보고 넘어가면 될 것 같구요. 다음은 캡슐 합니다. 일단 클래스 변수 앞에서 발전 개념이죠. 멤버 변수는 모든 인스턴스에서 접근이 가능한데 클래스 변수는 클래스 구역에서 선언하며 하나의 변수를 모든 인스턴스에서 공유한다. 라고 되어 있습니다. 메쏘드 내부에서 클래스 변수에 접근하기 위해서는 클래스명을 사용한다고 되어 있어요. 덧붙여서 하나를 더 본다고 하면 프라임 에이트 변수라고 있죠. 인스턴스의 내부에서는 서로 공유가 가능하지만 외부에서는 접근이 불가능한 연습 말

47:01
그대로 플레이메이트 자바에서 f 라 이벤트라도 똑같죠. 접근제한 자를 지정 하는건데 프라 이벤트라고 쓰지 않고요. 언더 스코어 늘 부개 붙이면 됩니다. 변수명 앞에 언더 스코어를 주교 붙이게 되면 이거는 이때부터 프라이비트 에어 호출을 할 때도 언더 스코어는 계속 입력을 해 줘야 되구요. 제가 그래서 코드를 한번 분석을 해보면 요. 클래식 한 해 보겠습니다. 일단은 프라이 베이트 의 클래스 변수를 생성하는 걸로 이렇게 되어있구요. 그 다음에 행성 자 메소드가 정의가 되고 있죠. 잘 보세요. 샘플 점 컬러 얘는 인스턴스 변수에 요. 셀 프 가 붙으면 해당 인스턴스 란 뜻입니다. 그렇기 때문에 인스턴스 변수 구요. 클래스 의 명의 붙게 되면 이런 식으로 클래스 바깥쪽에 생성되거나 클래스 지명이 붙게 되면 이것은 클래스 변수 달하는 거에요. 인스턴스 랑 클래스 랑 9분이 당을 묻히면 은 이해가 된다고 말씀 되었죠.

48:01
클래스 당 1 인스턴스 탕 1 이렇게 보시면 됩니다. 자 그래서 인스턴스 를 2개를 생성을 하게 되면 이 셀프 컬러는 각각의 인스턴스 의 하나씩 존재를 하게 되는 거고 이렇게 클래스 명의 달라붙거나 클래스 바깥에 이렇게 정의를 하게 된 클래스 변수들은 하나의 변수를 같이 공유 한다. 라는 거죠. 그러니까? 모든 인스턴스가 공유하는 클래스 변수에 초기값을 0으로 하고 인스턴스 를 두번 생성 했으니까? 생성자 메소드 가 두번 호출이 될거고 각 생성자 메소드 에서 클래스 변수를 1 씩 두번 증가를 시켜 쓰니까? 실제로는 이렇게 값이 하나씩 하나씩 증가가 되고 있다는 거죠. 인스턴스 변수 란 클래스 변수를 할까? 계시면 않네요. 여기까진 이 보도록 하겠습니다. 세번째 상속 입니다. 상속은 우리가

49:01
알고 있는 개념이죠. 기존의 클래스를 상속받아서 더 다양한 기능을 추가하는 그런 형태입니다. 파이썬에서 상속은 별도의 키워드 뭐 익스체인지 라던지 윈프리 맨 치의 이런거 필요없이 5 그냥 괄호 안이 상위 클래스의 명을 입력해주면 됩니다. 상속받은 하위 클래스는 상위 클래스 의 대부분 을 사용할 수 있게 되겠죠. 아래쪽 코드를 한번 볼게요. 자 코드를 보시면 클래식카 에 해당하는 클래스가 있고요. 그 다음에 그냥 카이 해당하는 클래스가 있습니다. 그런데 괄호 안에 클래식 파가 들어가 있죠. 그러면 카렌 하이클래스 가 되는거구요. 클래식한 은 상위 클래스가 되는 겁니다. 그러면 앞으로는 캅 객체 의 드라이 분 을 사용할 수 있게 되는 거죠. 자 그래서 팔은 생성할 때 자동차 색깔만 지정한 별도로 하고서 여기에 드라이브 메소드를 호출하게 되면 여기에는 없지만 이미 이 점 에서 상속을 받은 드라이브 메소드를

50:01
수행할 수 있다. 이렇게 보시면 되겠습니다. 가장 기본적인 부분이죠. 자 그 다음에 슈퍼 라는 개념이 나와있어요. 섬이 클래스 생성자에 인수를 전달할 필요가 있는 경우에 하위 컬 s 에서 상위 클래스 생성자를 별도로 호출을 해 줘야 됩니다. 하위 클래스 내부에서 3위 클래스 에 접근하기 위해서는 슈퍼 메소드 를 활용해야 된다. 라고 되어있죠. 코드를 한번 보겠습니다. 코드를 보면 은 여기 훨씬 사람 이라고 할게요. 그 다음에 여기에 학생 클래스가 있습니다. 그래서 사람 클리셰를 학생 클래스가 상속을 받고 있습니다. 이 말을 계속 길게 하니까? 발음이 잘 안되네요. 양해 바라구요. 어쨌든 이 상태에요. 그래서 보면은 이사람 클래스의 생성자를 보시면 이름은 입력받아서 이름 변수를 생성하는 걸로 되어 있습니다. 자 그런데 이거 같은 경우에는 사람 인스턴스 훨씬 형 인스턴스 를 생성할 때 진행이 되는거고

51:00
이 사람 을 상속받는 학생 계층에서는 진행이 안 되는 부분이에요. 자 그런데 이 네 힘 이라는 변수를 여기서 사용을 해야 되거든요. 그렇기 때문에 하위 클래스의 생성자에서 창이 클래스 생성자를 호출 해주는 겁니다. 그래서 상위 클래스의 생성자 안에 있는 요소들을 할당해 주고 다시 내려와서 자기 자신에 대한 작업을 하는 거죠. 순서대로 한번 볼게요. 일단은 액스 라는 변수에 학생 인스턴스 를 생성합니다. 학생 인스턴스 에는 4인과 ng 에 해당하는 값이 필요해요. 그래서 이름과 나이를 기록했습니다. 자 그러면 요. 이름은 요기에 할당이 돼서 창이 클래스 의 생성자로 전자기 됩니다. 그래서 이혼의 이미 일로 넘어가죠. 자 그러면 이 nan

52:01
훨씬 클래시 의 인스턴스 변수에 할당 이 되는 거죠. 이렇게 활동이 되는 거죠. 이 상태에서 다시 이제 끝났으니까? 내려옵니다. 그런 다음 학생 클래스의 인스턴스 변수 쇼 ag 를 생성 하고요. 아까? 건네받아 된 미혼 ag 값을 할당 하는 형식으로 생성자가 마무리가 되는 거에요. 이렇게 하지 않으면 창이 클래스 의 생성자 고 추리 불가능하기 때문에 코드가 문제가 생길 겁니다. 이렇게 해야 웰컴 매수 들을 호출 했을 때요. 샘플 네임을 적용할 수가 있어요. 답변이 까지가 슈퍼 메소드 를 쓰는 경우를 간략하게 표현을 한 겁니다. 조금 복잡하죠. 상속을 하게 되면 좀 여러가지로 복잡한 부분이 생겨요. 넘어가서 메소드 오버라이딩 보겠습니다. 매수도 오브 라이딩은 우리가 한번 더 봤던 내용이죠. 말그대로 메소드 를 재정의하는 거 자산인 클래스의 메소드 를 새로운 기능을 추가하는 거죠. 또는 변경을

53:01
하거나 자 드라이브 있습니다. 자 그런데 상속받은 클래스에서 다시 드라이브를 재정이 하고 있죠. 그러면 드라이브 를 호출할때 이 드라이브가 노출되는 게 아니라 요. 부분이 호출됩니다. 어려운 개념이 아니죠. 이제는

728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/ETc4c7Xkgk4?si=ygMnPFeujDhf8izB

1. 객체지향 프로그래밍과 클래스 설계

1-1. 객체지향 프로그래밍의 이해
- 객체지향 프로그래밍은 실체를 모델링하고자 하는 프로그래밍 방식임
- 연산자는 공통된 틀을 제공하므로, 객체지향 프로그래밍에서 주로 사용됨
- 클래스는 특정 인스턴스에 대한 틀을 제공하며, 메소드가 있는 클래스가 가장 먼저 실행되는 클래스임
- 클래스의 구성 요소는 멤버 변수와 멤버 메소드로 이루어짐
- (중요) 접근제한자는 클래스의 멤버들의 접근 수준을 결정하는 토큰임

1-2. 클래스의 인스턴스 생성과 접근제한자
- 클래스의 인스턴스는 클래스명과 변수명을 선언하여 생성됨
- 생성된 인스턴스의 변수는 객체의 변수와 멤버 변수로 구성됨
- 접근제한자는 클래스의 인스턴스에 접근할 수 있는 범위를 결정함
- (중요) 접근제한자에 따라 인스턴스의 접근이 제한되며, 이를 통해 데이터의 오남용을 막을 수 있음

1-3. 클래스의 인스턴스와 접근제한자
- 클래스의 인스턴스는 클래스명과 변수명을 선언하여 생성됨
- 인스턴스의 변수는 객체의 변수와 멤버 변수로 구성됨
- 접근제한자에 따라 인스턴스의 접근이 제한되며, 이를 통해 클래스의 안정성을 확보할 수 있음
- (중요) 인스턴스의 접근제한자 설정은 개발자의 의도에 따라 다르게 지정할 수 있음

2. 멤버변수와 지역변수

2-1. 멤버변수와 지역변수의 정의
- 멤버변수는 클래스 생성 시점에 이미 존재하는 변수로, 접근 제한이 없는 공공 변수임
- 지역변수는 클래스 내부에서 생성되는 변수로, 해당 지역에만 접근 가능함
- 멤버변수와 지역변수는 접근 제한 없는 공공 변수와 지역 변수로 분류됨
- (중요) 지역변수는 다른 지역의 변수에 접근할 수 없음
- 지역변수는 매개변수와 지역변수로 나뉨

2-2. 멤버변수와 지역변수의 차이
- 인스턴스 변수는 클래스의 인스턴스마다 생성되며, 클래스 내부의 공공 변수임
- 클래스 변수는 클래스의 인스턴스를 대상으로 하는 변수로, 접근 제한이 있음
- 지역변수는 클래스 내부의 다른 지역에 접근하여 생성되는 변수로, 다른 지역의 변수에 접근 불가함
- 매개변수는 클래스의 인스턴스에 할당된 지역 변수임
- 지역변수는 클래스 명의 메소드와 동일함

2-3. 생성자 메소드의 특징
- 생성자 메소드는 리턴 타입이 없으며, 직접 호출 불가함
- 키워드를 통해만 호출 가능함
- 생성자 메소드는 매개변수를 받아 입력받음
- 입력받은 매개변수는 생성자에 전달되어 사용됨
- (중요) 생성자 메소드의 특징을 이해해야 다른 메소드를 이해할 수 있음

3. 상속, 생성자, 오버로딩 이해

3-1. 상속과 생성자 이해
- 클래스는 복수의 인스턴스 생성 가능함
- 각 인스턴스마다 멤버 변수를 갖고, 클래스 변수는 별도의 공간에 존재함
- 생성자 메소드는 클래스 면과 같은 이름으로 존재, 자동으로 진행됨
- 별도로 호출 불가, 메소드는 인스턴스 생성시 사용됨

3-2. 오버로딩과 메소드의 개수 및 유형
- 오버로딩은 동일한 메소드 명을 가진 메소드들을 매개 변수의 개수와 유형 기준으로 분류해 실행함
- 생성자, 서클 메소드 등이 오버로딩에 해당함
- 오버로딩의 기준은 이름이 아닌 매개 변수의 유형이나 개수 등임
- (중요) 같은 이름으로 여러 개의 매개 변수를 지정해 사용하는 것을 오버로딩이라고 함

3-3. 업 캐스팅과 그 특징
- 업 캐스팅은 상위 클래스의 인스턴스를 하위 클래스의 타입의 참조 형 변수에 할당하는 것임
- 상위 클래스의 메소드가 오버로딩된 경우, 업 캐스팅이 있더라도 하위 클래스의 메소드가 수행될 수 있음
- (중요) 하지만 하위 참조 형 변수에 상위 객체를 담을 안 할 경우, 오류가 발생함
- 즉, 하위 객체는 상위 클래스의 멤버에 접근 가능하나, 상위 클래스의 메소드를 호출할 수 없음

4. 클래스 이해

4-1. 클래스 이해하기
- 클래스와 객체를 이용한 데이터 표현과 인공지능 기반 음슴체
- 데이터의 주체인 객체는 인공지능 모델의 핵심 요소 음슴체
- 객체를 인공지능 모델의 인공지능(인공지능 모델에 의존) 음슴체
- 인공지능 모델은 객체에 응답을 얻기 위해 데이터로 학습하고 변환 음슴체
- 모델은 데이터로부터 학습한 후, 새로운 데이터에 응답하는 기능을 가져 음슴체

4-2. 객체와 클래스의 관계
- 객체는 클래스에, 클래스는 객체에 응답함 음슴체
- 객체에 응답하는 기능을 구현한 클래스를 객체의 인스턴스로 인식 음슴체
- 객체는 인스턴스들로부터 데이터를 받아 변환한 후, 다른 객체에 전달함 음슴체
- 객체의 인스턴스들로부터 데이터를 받는 과정을 '데이터 전달'이라 부름 음슴체
- 객체는 여러 개의 인스턴스를 가지며, 객체가 없는 인스턴스를 생성할 수 없음 음슴체

4-3. 클래스의 응답과 생성
- 클래스는 특정한 기능을 제공하며, 객체가 해당 기능을 통해 데이터를 변환함 음슴체
- 클래스는 객체의 인스턴스를 생성하여 해당 기능을 제공함 음슴체
- 객체는 인스턴스를 통해 해당 기능을 통해 데이터를 변환하고, 다른 객체에 전달함 음슴체
- 클래스의 기능은 객체의 인스턴스를 통해 응답하며, 객체의 생성을 통해 응답이 발생함 음슴체
- (중요) 클래스는 객체를 생성하고, 객체는 인스턴스를 통해 해당 기능을 통해 데이터를 변환하고, 다른 객체에 전달함

5. 객체지향 개념과 추상 클래스 이해

5-1. 객체지향 개념과 추상 클래스의 기본
- 객체지향 프로그래밍에서 클래스와 객체의 개념에 대해 설명함
- (중요) 객체는 실제 세계를 모사하며, 객체를 만드는 코드는 객체지향 프로그래밍 언어를 사용함
- 객체는 여러 속성이 있음, 각 속성은 특정 값으로 표현됨
- 객체에는 항상 클래스와 객체, 그리고 메소드로 구성됨
- 객체의 메소드는 동작을 나타내는 명령어이며, 객체를 사용하는 프로그램의 핵심이 됨

5-2. 메소드와 인터페이스의 이해
- (중요) 메소드는 객체에서 수행하는 동작을 의미하며, 각 메소드는 특정 기능을 수행함
- 인터페이스는 메소드를 상세하게 정의하고, 그 이상의 메소드는 모두 추상 메소드로 처리함
- 인터페이스는 객체의 다중 사용을 제한하여 시스템의 일관성을 유지함
- 인터페이스는 각 메소드가 제대로 정의된 범위 내에서만 정의되어야 함
- 인터페이스는 다중상속을 원칙적으로 금지하며, 이를 통해 시스템의 안정성을 보장함

5-3. 인터페이스의 구체적인 이해와 활용
- 인터페이스는 복잡한 기능을 하나의 객체로 관리할 수 있게 해줌
- 인터페이스는 복잡한 시스템을 단순화하고, 효율적으로 코드를 작성할 수 있게 해줌
- 인터페이스는 복잡한 로직을 파악하고 이해하는데 도움을 줌
- (중요) 인터페이스는 여러 가지 기능을 하나로 합쳐 관리하며, 이를 통해 프로그램의 유지성과 신뢰성이 보장됨
- 인터페이스는 여러 객체와 시스템 간의 연관성을 확립하고, 이를 통해 복잡한 문제를 해결하는 데 도움을 줌

6. 프로그래밍 예외처리와 스레드 개념

6-1. 프로그래밍 예외 처리와 그 중요성
- 프로그래밍에서 실행 도중 문제 발생 시 프로그램 종료를 막기 위해 예외 처리 필요
- 문법적 문제 외에 의도치 않은 작동으로 인한 문제를 예외라 함
- 예외 처리를 통해 이러한 문제를 처리하며, 이는 모든 영역에서 발생하지 않아 별도로 예외 처리 지정 필요
- (중요) 예외 처리를 반드시 해주어야 하며, 이를 위해 트라이-캐치-파이널-메타 방식 활용

6-2. 스레드 클래스와 그 활용
- 스레드 클래스를 활용해 여러 개의 동작을 동시에 수행 가능
- (중요) 코드 중 예외가 발생하면 캐치 블럭이 수행되며, 예외 발생 여부와 상관 없이 파이널이 무조건 수행됨
- 스레드 작업시에는 각 스레드 길이 정보를 주고받아 처리과정을 줄임
- 런 메소드를 상속받아 사용하거나, 쓰레드 클래스를 상속받아 구현 가능

6-3. 스레드 클래스의 구성과 실행
- 스레드 클래스는 런 메소드를 통해 시작되고, 이어서 메소드를 수행함
- 런 메소드를 수행하는 과정에서 생성된 인스턴스를 박스형으로 만듦
- (중요) 스레드가 실행 준비가 된 상태에서 스타트 메소드를 통해 시작되거나, 멈춤 상태에서 재개행 실행이 가능
- 스레딩을 통해 다수의 요인으로 인해 실행이 중단되거나, 완료된 상태로 이어지는 과정을 모니터링

00:01
두번째 객체지향 프로그래밍 섹션 공부 같이 한번 해보도록 하겠습니다. 객체지향 위주로 진행이 될 거구요. 객체 지향 프로그래밍 그러니까? 잡아 져 참아도 연산자 라든지 그런 것들이다. 존재하지만 c 언어와 같은 개념이기 때문에 c 언어에서 연산자는 공부하시면 되는거고 여기서는 객체지향 기술 위주로 같이 한번 공부를 해보도록 할게요. 첫번째로 클래스 설계 나와있습니다. 클래스는 앞에서 충분히 설명을 했죠. 기본적으로 특정 인스턴스 날 객체에 대한 틀을 제공한다. 그리고 다양한 클래스들 중에 메인 메소드 를 포함 하는 클래스가 가장 먼저 실행되는 클래스다. 이렇게 되어 있습니다. 아래쪽에 코드를 보시면 써클 클러 씨가 지금 존재 하구요. 아래쪽에 헬로 월드 클래스가 존재하는데 이 두 클래스 중에 맨 메소드가 존재하는 클래스가 시작 지점이다. 이렇게 되어

01:00
있는 겁니다. 넘어가서 클래스 의 구성을 보면 클래스 의 구성 요소는 멤버 라고 이야기 하는데 이 멤버의 는 변수와 메소드가 있다. 라고 되어 있는 겁니다. 보통 우리가 속성이라고 하는게 이 변수에 해당하는 거죠. 그리고 멤버는 일반적으로 클래스 의 외부 접근이 불가능하도록 접근을 제안 해야 된다고 되어 있습니다. 여기에 있는 캡슐 화해한 기능이에요. 일단 그런데 여기서는 멤버변수 랑 메쏘드 말을 따 볼게요. 써클 클래스를 보시면 위쪽에 변수가 정의되어 있는 부분이 있구요. 메소드가 정의되어 있는 부분이 있죠. 클래스 안에 존재하기 때문에 멤버 변소 멤버 메쏘드 이렇게 기억을 하고 계시면 되겠습니다. 그런 다음 접근제한 저를 볼 건데요. 접근제한 자 보기 전에 기본 출력 메소드 를 좀 볼게요. 기본 출력 메소드가 총 3가지가 있다고 되어 있습니다. 프린트와 프린트 에덴 프린트 f 3가지가 있는데 프린트는 출력만 하구요. 에렌은 출력

02:02
타고 줄바꿈 까지 알아서 해줍니다. 그다음 서식에 의한 출력 프린트 f 는 c 언어에서 봤던 서식 문자열을 사용할 수 있다. 이렇게 생각하시면 되요. 열정도 보고 접근 지원자를 한번 보도록 하죠. 접근 제한 자는 클래스 네 멤버들의 접근 수준을 결정하는 토큰 이다. 라고 되어있구요. 이거는 코드 조각 이란 뜻이에요. 프로그램 패키지 하이클래스 자신의 클래스 손으로 접근 수준의 결정할 수 있다. 종류는 아래와 같다. 는 어떻게 있습니다. 한번 보도록 할게요. 안에 그림을 보시면 어느정도 감이 오실 텐데 커피전문점 이라는 프로그램이 있다고 생각을 해 볼게요. 자 그럼 여기 안에는 다양한 클래스가 존재할 텐데 클래스를 관련있는 것들끼리 묶어 주는게 패키지 입니다. 그래서 커피 패키지와 푸키 패키지로 지금 난 왔어요. 커피의 전문점 프로그램 안에 두 가지 패키지 가 존재하는 겁니다. 그중에 커피 패키지 안에는

03:01
에스프레소와 아메리카노 클래스가 있는데 s 프레스와 아메리카노는 서로 상 속과 인계 있다. 요렇게 진 그려져 있는 거죠. 이 상태에서 접근제한 자 종류를 파악할 수가 있습니다. 첫번째로 퍼블릭 이라고 되어 있는 이 부분이죠. 중군 하느 색 사각형 인데 자 해석을 이렇게 하시면 되요. 현재 기준 클래스가 이겁니다. 은 엄기준 클래스 인데 이 기준 클래스에 있는 어떤 특정 4 멤버에 접근할 수 있는 범 원화를 해석하시면 되요. 자 그래서 퍼블릭 은 이쪽에 있는 모든 범위에서 요. 별에 접근할 수 있다. 라는 뜻이에요. 허블 이거 두 번째 d 펄 t 는 검색 직사각형 잊어 패키지 를 뜻합니다. 패 키가 현재 두 개가 있는데 현재 요. 별이 포함되어 있는 패키지 내부에서만 접근이 가능하다. 뜻이에요. 그래서 여기서 요렇게 접근하는 건 안되구요. 여기서 접근하거나 2 패키지 내부에

04:00
다른 클래스에서 접근하는 건 가능하단 뜻이에요. 디폴트 깊어 일체는 직접 디폴트 라고 쓰는게 아니라 생략을 하는 겁니다. 아무것도 안 쓰는 경우에 이야기 하는거예요. 다음으로 프로텍트 대라고 이재영 있습니다. 프로펫 피드는 상속 관계에서 적용이 되는 거에요. 그러니까? 이쪽에 멤버가 있다고 하면 나 자신과 나를 물려준 하위 클래스 요기까지만 쓸 수 있다는 뜻이에요. 같은 패키지 내에 상속 관계가 없는 다른 클래스에서는 접근하지 못하는 상태입니다. 요게 프로텍티브 이구요. 프라이 베이트는 나만 쓸 수 있는 겁니다. 이해가 포함되어 있는 남한 쓸 수 있는 내 클래스 에서만 접근이 가능한 요소의 요. 이렇게 9분을 하실 수 있으시면 됩니다. 실제 코드 다만 봐야겠죠. 잘 보겠습니다. # 껄 클래스를 구현하고 있는데요. 프라임 에이트 가 붙어 있죠. 요. 두가지는 외부에서 접근할 수가 없어요. 내부에서만 클래스 내부에서만 접근할

05:01
수 있는 요소들입니다. 자 그 상태구요. 여기 아래쪽에 보시면 은 허 벌리고 믿으려고 해서 3 에디우스 라는 메소드를 정의 를 하고 있는데 허 블링 이란 얘기는 외부에서 접근이 가능하다는 뜻이죠. 프로그램 전체적으로 여행에서 지금 뭘 하고 있는지를 보면 매개 변수를 하나 만들구요. 이 매개변수의 있는 값을 에디우스 의 집어넣고 있어요. 4 이어 3는 써클 내부에 있는 변수입니다. 프라 이벤트 지만 어차피 이 메소드도 내부에 있기 때문에 서로 접근이 가능하죠. 결론적으로 이 코드는 에듀스 늘 직접 접근하는 건 불가능 한데 3 뉴스라는 메소드를 통해서 접근하면 문제가 없는 형태가 되는 거에요. 자 이게 어떤 장점이 있냐면 에듀스 늘 직접 접근 하지 않기 때문에 데이터에 대한 오 남용을 막을 수가 있어요. 정해진 절차 정해진 메소드를 통해서만 값을 할당하고 값을 가져오고

06:00
이렇게 할 수 있게 되는 거죠. 우리가 김치찌개를 먹고 싶다고 해서 식당가서 주방에 직접 들어가서 김치찌개를 끓여 오지 않는 거랑 같은 개념이 에요. 서버 나 또는 뭐 키오스크 라든지 여러가지 주문 절차를 통해서 주문을 하면 그쪽에서 끓여서 나오는 형태죠. 그렇게 되면 우리가 시계의 재료에 대한 여러가지 오 남용을 막을 수가 있는 거죠. 감염도 막을 수가 있구요. 이런 절차를 캡슐 하라고 한다고 보시면 되요. 예 정도 보구요. 다음은 인스턴스 입니다. 인스턴스 특정 클래스를 기반으로 생성된 객체를 이야기합니다. 아래쪽에 문법을 보시면 클래스 명과 변수명을 선언하고 있죠. 이거는 해당 클래스 에서 생성되는 인스턴스 를 저장할 수 있는 변수를 생성 하겠다라는 의미가 되구요. 이런 변수를 참조 형 변수 라고 이야기합니다.

07:00
그러면 여기에는 해당 클래스 에서 생성한 인스턴스가 저장이 되어야 하는데 해당 클래스에서 인스턴스는 생성하기 위해서 필요한 게 키워드 간 이유가 있습니다. 자 그래서 만약에 a 라는 클래스가 있다고 가정 한다고 하면 여기가 a 라고 하면 여기 동에 이어야 하는 거죠. 자 그래서 a 클래스 에서 파생되는 생성되는 새로운 인스턴스 를 생성하고 그 새로운 인스턴스 를 여기에 할당을 하겠다. 이런 의미가 되는 겁니다. 잘 보세요. 문법에 오른쪽에 과로가 있다는거 체크해 주셔야 되구요. 그리고 지금처럼 제가 설명한 것처럼 이해하는 게 가장 일반적이지만 뒤쪽이 가보시면 개발자의 의도에 따라 2 클래스명을 다르게 지정을 할 수도 있습니다. 참고를 하세요. 그리고 멤버의 접근하는 방법은 객체 변수 클래식 명의 아니죠. 객체 변수와 멤버 이름을 점으로 구성해서

08:00
접근을 한다. 라고 되어 있습니다. 자 그래서 어쨌든 클래스 내부에 여러 가지 변수가 생기게 되는데 인 변수에 형 책을 9분할 필요가 있습니다. 접근하는 경로 라던지 방식 이런 것들을 정할 수 있어야 되기 때문인데 가장 먼저 멤버 변수와 지역 변수 라고 나와 있어요. 멤버 변수는 클래스 내부에 존재하는 변수를 의미합니다. 그리고 지역 변수는 클래스 네모에 우리가 메쏘드 라든지 여러가지 구현을 통해서 새롭게 중괄호를 추구하는 경우가 있죠. 이때 생성되는 변수들을 지역 된 수라고 이야기해요. 그래서 일단 멤버 변수와 지역 변수를 9분할 수 있어야 됩니다. 아니죠. 코드를 한번 보면 여기 보면은 벤 av 라는 클래스 안에 func 라는 메소드가 1 생성돼 있고요. 맨 이라는 메소드도 생성이 되어 있어요. 자 그러면 요만큼 과 u 만큼을 지역 이라고 표현합니다. fun 시

09:01
지역 메인 지역 이렇게 이야기를 하면 되요. 그러면 여기 안에서 새로 생성된 변수들이 있죠. 인테 ce 이런것들 인체에 이 에미의 입을 b 이런 것들이 지역 변수가 되는 겁니다. 그러면 이거 밖에 있는 클래스 내부에 있지만 다른 지역들 밖에 있는 요놈 이놈들이 멤버 변수가 되는 거에요. 9분이 되시죠. 자 그러면 여기서 이제 포인트는 멤버 변수와 지역변수 안에서도 여러 가지 갈리는 변수의 형태들이 있는데 그것도 한번 보며 그 다음에 이름이 서로 갖출 때 어떻게 접근 하는지에 대해서도 같이 좀 볼게요. 코드를 하나씩 보겠습니다. 일단 의인 tce 정수형 인스턴스 변수 즉 인스턴스 변수 랑 사이입니다. 멤버변수 내에 인스턴스 변수 령 서 있어요. 자 여기 인스턴스 변수 라고 써있고 여기 아래쪽에 새치기 붙어 있는 건 클래스 변수 라고 수 있습니다. 이 스트링은 자료 형이에요. 문자열을 저장할 수 있는 전해옵니다.

10:01
자 그러면 스태틱 이 붙었을 때 클래스 라는 걸 알겠는데 그러면 인스턴스가 클래스 의 차이는 뭐냐 쉽게 이해를 하시려면 이 부분에 당을 붙이시면 되요. 인스턴스 당 변수가 생성되는 거에요. 그러니까? 인스턴스 를 5개 생성을 하게 되면 인 트 씨도 5개가 생성이 되는 겁니다. 이해 되시죠. 자 그런데 클래스 변수 도 마찬가지 당을 붙이게 되면 클래스 당 하나만 생성이 됩니다. 인스턴스 를 1000개를 행성 하더니 청결한 생성하는 해당 클래스 안에 하나만 존재하는 변수에 요. 자 그래서 인스턴스와 클래스의 차이는 당을 붙여 보면은 이해가 된다. 뭐 그런얘기 구요. 자 그리고 이와 함수는 우리가 님의 김현 션을 공부 했으니까? 바로 안에 여기사 있으면 매개변수 적 내기 매수도 지역변수 에 해당한다는 거죠. 해당 지역이 시작될 때 같이 생성이 되기 때문에

11:00
자 그러면 씨가 주기가 있어요. 지역변수 의 신어 이구요. 멤버별 섀시가 있습니다. 그러면 이 두개를 어떻게 9분할 거야 라는 거에요. 일단 지역 방에서는 이름만 언급을 했을 때 일단 지역변수 라고 봅니다. 잡아내서 아래쪽에 쉬라고 보이죠. 이 싱아 요걸 듯 하는 거에요. 같은 지역에 있는 변수가 우선입니다. 자 그런데 만약에 이게 아니라 다른 변수를 접근하고 싶을 때는 디스 키워 들어오십니다. 기술하는 것은 이 클래스 은 이 란 뜻이에요. 그래서 dc 짬 시란 얘기는 이 클래스 있는 c 라는 뜻이 되는 겁니다. 자 그래서 지수 점 쉬는시간 뜻은 이 클래스의 멤버변수 c 에다가 지역 변수 c 에 값을 할당 하겠다. 이런 의미가 됩니다. 디스가 있는거랑 없는 거랑 차이가 엄연히 커요. 생각을 잘 해주시네요. 그리고 나머지 아래쪽에 참 주변을 좀

12:00
볼까요. 안쪽에 보시면 은 이거는 그냥 정수형 변수 지역변수 중에 어 아래쪽이 중요합니다. 애니의 입을 b 라고 써있어요. 베이브 는 클래스 명 이잖아요. 자 그러면 이 클래스에서 생성된 인스턴스 를 담을 수 있는 공갈 b 를 만들겠다. 라는 거고 이걸 참조 형 변수 라고 이야기를 합니다. 자 그래놓고 뉴헤어 있죠. 인스턴스 1 생성하겠습니다. 라는 거구요. 의미 에임을 에 의해서 인스턴스 를 하나 생성 하겠습니다. 라는 말이 됩니다. 이해 되시죠. 이렇게 접근을 하실 수 있으시면 되요. 자 넘어 갈게요. 클래스 변수 가 조금 더 자세하게 나와있습니다. 아래쪽에 더 많은 코드가 있죠. 설치 한번 보도록 할게요. 인스턴스 변수는 인스턴스 마다. 독립적으로 존재한다. 고 말씀을 드렸죠. 특별한 경우가 아니라면 접근을 제한하는 게 일반적이다. 라고 대학 있어요. 캡 씨와 같은 클래스 로부터 생성된 모든 인스턴스가 함께 공유하는 데이터가 필요할 때 클래스

13:01
변수를 사용한다. 고 되어 있습니다. 접근 제한 된 주구요. 어 스 채팅이 보인 칩니다. 아까도 채팅이 붙어 있었죠. 클래스 면서 는 인스턴스 생성이 되지 않아도 클래스가 코드의 언급되는 순간 생성이 되는 거구요. 프로그램이 끝날 때까지 유지가 됩니다. 코드 한번 보도록 하죠. 이렇게 계속 서클 클래스를 같이 한번 보고 있습니다. 자 프라이 베이트 를 통해서 멤버 변수를 용어를 잘 파악하세요. 멤버 변수를 지금 3개를 생성을 했는데 이 멤버 변수 중에 하나가 스태틱 이 붙어서 클래스 변수 가 되고 있어요. 나머지는 뭐였죠. 중 애가 인스턴스 변수 였죠. 멤버 변수 중 이 인스턴스 변수가 중이구요. 클래스 변수를 하나 있는 겁니다. 자 이 상태에서 새로운 개념의 1 나와있는데 생성자 메소드 를 보셔야 되요. 매수 주라는 것은 보통 이름이 있고요. 그 다음에 과로가 쳐져 있고 중

14:01
가루가 구성이 되어있는 이런 형태입니다. 그러니까? 얘도 메쏘드 줘 얘도 매수 되구요. 작은데 이 메소드는 특이하게 생성 죄라는 많이 붙어있어요. 생성자 메소드 라고 되겠습니다. 왜 이 많이 붙어 냐 면 일단은 리턴 타임이 없습니다. 얘는 봉 2대가 있는데 이는 리턴 타입이 없죠. 입자가 이것도 글로 자세하게 나와 있습니다. 그리고 클래스 명의 메쏘드 명과 동일해요. 이러면 생성자 메소드 겁니다. 생성자 메소드 의 특징은 직접 호출할 수 없어요. 흔히 t 듯이 nt 입어 같은 경우에는 직접 호출이 가능합니다. 코드를 통해서 직접 호출 할 수가 있는 친군데 써클은 호출을 할 수가 없어요. 그럼 얘는 언제 쓰냐 앞에 선 이후 키워드 같죠. 이유 키워드 를 통해서만 호출할 수 있는 매수 됩니다. 그렇기 때문에 생성자 메소드 라고 이야기를 한다는 거죠. 감이 오시나요.

15:00
자유 정도까지 입니다. 자 이 상태에서 실제로 프로그램의 흐름을 한번 따라가 보도록 할게요. 호드가 아무리 길어도 항상 시작은 메인이 다. 알고 계셔야 됩니다. 자기 상태에서 한번 보죠. 써클 참조 형 변수를 세계 만들었구요. 그 다음에 각각 뉴수 아크를 해가지고 유서 컬 윤 써클 이렇게 되어있어요. 자 그런데 아까? 랑은 다르게 뉴 서클 하고요. 괄호 안에 5.0 4.0 6.0 이라는 값이 들어가 있습니다. 자 이게 왜 그러냐면 생성자 메소드 위에 매개 변수가 존재하기 때문 이에요. 이 생성자를 호출할 때 지금 여기 생성된 호출 하고 있는 거예요. 인 생성자를 호출할 때 실수 정 데이터를 1 입력 받게끔 되어 있어요. 그렇기 때문에 여기 실수령 데이터를 입력하고 있는 겁니다. 자 그러면 이 입력받은 요거랑 누구나 같은 의미라고 있죠. 입력 바디에 매개변수 값에 멤버변수 율에 듀스의 집어 넣겠다.

16:00
여기죠. 용이의 요렇게 집어 넣겠습니다. 라는 의미가 되는 거죠. 자 그리고 더 중요한 것은 여기에 디스 점 cnt 라는 값이 예요. 디스 점 시인 t 값은 1 증가 시킬 거예요. 디스 나 자신의 여기죠. cnt 값을 1 증가 시키는 거죠. 그리고 나서 요즘 가 된 값을 포함해서 몇 번 객체가 생성 되었습니다. 이렇게 나오는 거죠. 자 그러면 이 시엔 t 값이 처음엔 0 이었으니까? 1 증가하게 되면 1번 객체가 생성 되었습니다. 이렇게 나오겠죠. 자 그 상태에서 두 번째 생성자를 보는 거죠. 자 그러면 요레 dsn 은 4.02 들어가는 거구요. 이 4.02 요기에 들어가겠죠. 두번째 인스턴스는 에디우스 값이 그러니까? 4.02 되는거예요. 자 그럼 이 다음부터 가 중요한데요. d 수 점 신 팀 또 마찬가지 이를 증가 시키지 않아요. 자 그러면 이 시 mp 값이 만약 에스테틱 이 없었으면 또 일일

17:01
거예요. 그런데 지금은 cnt 가 세팅이 붙어 있죠. 그렇기 때문에 방금 건 드렸던 그 데이터를 또 똑같이 건드리는 겁니다. 그래서 아까? 일이었죠. 지금 1 더 증가해서 2가 되는 거에요. 이런 식의 개념이라고 보시면 되요. 인스턴스가 그래서 여러 개 생성이 되어 있을 때 인스턴스 변수는 여기에 각각 존재하는 거구요. 그 다음의 클래스 변수는 별도의 공간에 존재해서 여기 있는걸 공통으로 건드린다. 이렇게 보시면 됩니다. 아시겠죠. 요런 개념이다. 라고 생각을 해 주시면 되요. 엄마 가서 생성자 메소드 에 대해서 나와 있는데 생성자 메소드 는 오버로딩 과 같이 공부를 해 주는 게 좋기 때문에 아래쪽에 별도로 해놨어요. 일단 생성자 메소드 는 클래스 의 면과 같은 이름으로 존재하는 메쏘드 구요. 자동으로 진행되구요. 별도로 호출할 수 없고 2턴 뭐니 사용 안되요. 그렇기 때문에 리전

18:00
타입도 없죠. 생성자는 인스턴스 생성시 멤버 변수 및 연관 객체들의 초 비와 작업에 사용되는 편입니다. 자 근데 여기서 오버로딩 이라는 개념을 배우게 되어 동일한 메쏘드 명을 가진 메소드들을 매개 변수의 개수와 유형을 기준으로 9분해서 실행을 해 준다고 되어 있습니다. 이건 코드를 보고 확인할 수 있어요. 생성자 역시 매 솟 이기 때문에 오버로딩 적용이 가능하다. 그러니까? 생성자 메서드 오버로딩 요기 가능하다는 거죠. 코드를 같이 한번 볼게요. 또 서클 클래스 인데 일단 이 이제 위쪽에 있는 것은 많이 갔으니까? 어머 가구요. 아래쪽에 있는 똑같은 이름의 메소드를 한번 볼게요. 써클 메소드가 여기도 있구요. 여기 되십니다. 여기서 p n 이 괄호 안에 있는 요. 놈이에요. 이놈이 달라야 되요. 그래야 같은 이름으로 여러 가지 할 수 있습니다. 이게 오버로딩 해요. 자 그러면 어떻게 진행이 되는지 한번 보도록 하죠. 써클 참 주변 선을 2개 만들고요.

19:02
인스턴스 를 2개 생성을 하고 있는데 한번은 5.0 을 집어 넣고 요. 한번은 집어 넣지 않아요. 제 그러면 5.0 을 넣었을 때는 애가 실행됩니다. 자바 가상머신이 오버로딩 된 메소드들을 보고 5000명이 들어왔네 어 이러면 더 물 형 매개 변수를 하나 필요. 하겠구나 그러면 얘는 실행이 이렇게 않아서 지정해 주는 거에요. 마찬가지죠. 안쪽에 서클 같은 경우에는 인수로 넘기는 값이 하나도 없죠. 자 그러면 매개변수가 아예 없는 얘를 알아서 실행을 해 준다는 거죠. 이게 오버로딩 의 개념입니다. 똑같은 이름으로 두 가지 이상의 일을 할 수가 있게 되죠. 요. 개념을 오버로딩 이라고 한다. 이렇게 알고 계시면 되요. 오버로딩 의 9분 기준은 이름이 아니라 이런 같으니까요. 매개 변수의 유형이나 갯수 이런 것들을 보고 파악할 수 있다. 이렇게 보시면 되겠습니다. 다음은 객실 대한 기술을 적용하는 거에요. 우리가 앞에서 상속인의 추상화

20:01
네 그런 얘기에 썼었죠. 그런 부분입니다. 상소 분 우리가 알고있는 그 개념 하고 같은 개념이 에요. 해당 익스텐드 키워드를 이용해서 상속받을 클래스를 지정할 수 있다고 되어 있고요. 하위 클래스는 상위 클래스의 멤버를 제 사용할 수 있구요. 제 정의할 수 있구요. 추가 멤버 를 통해서 확장을 시킬 수도 있습니다. 이재정 이를 어려운 말로 오버라이딩 이라고 이야기를 해요. 제정 이에요. 말그대로 맨손으로 를 재정의하는 건데 동일한 메쏘드 명과 매개 변수를 지정해서 사용한다고 대형 있죠. 매개 면서 늘 동일하게 지정을 한다. 서로 다르게 지정하면 어떻게 되요. 오버로딩 이 되는 거죠. 서너 2개의 9분을 잘 해주셔야 됩니다. 같이 코드 분석을 한번 해보도록 하죠. 첫번째로 에스프레소 클래스가 있습니다. sps 클래스 는 에스프레소 라는 변수와 레시피 라는 메소드를 가지고 있는 에요. 자 그리고 아래쪽에 아메리카노 라는 클래스가 있습니다. 이 아메리카노는

21:02
워터와 마찬가지의 레시피 라는 메소드를 가지고 있어요. 작은 4 요. 아메리카노가 에스프레소 를 상속 받겠다고 명시를 했습니다. 자 이렇게 되는 순간 요. 아메리카노는 에스프레소 변수와 레시피 라는 메소드를 둘다. 쓸수 있게 되는 거에요. 상성을 받았으니까요. 작은데 이 독 같은 이름의 똑같은 매개 변수를 가진 메소드가 아메리카 메도 존재하죠. 자 그러면 얘는 무시되고 애가 수행되는 겁니다. 이름은 똑같은데 아메리카노는 자신의 레시피 를 호출할 수 있게 되는 거죠. 자 이걸 메소드를 오버라이딩 이라고 합니다. 자 이거 한번 볼게 천천히 자 일단 위쪽이 구조를 같이 00 여 아니 중에 코드를 보면 에스프레소 타입의 참 주면서 1 만들고요. 에스프레소

22:00
객체를 하나 생성을 하고 있습니다. 정확하게는 인스턴스 줘 인스턴스가 지금이 원 에 저장이 되어 있는데 이 원의 레시피 를 호출해 본다는 거예요. 자 그러면 얘는 s 풀에서 타입이기 때문에 예가 호출이 됩니다. 그런데 그 다음에 아메리카노 같은 경우에는 아메리카노 인스턴스 같은 경우에는 레시피를 호출 하려고 보면 일단은 여기에도 있고 여기에도 있잖아요. 이름의 같으면 어 이거 재정이 됐구나 라고 해서 얘를 건드리게 되는 거죠. 이거 되시나요. 이런식으로 구성을 잘 수가 있다. 접근을 해 보시면 되겠습니다. 사랑으로 업 캐스팅 입니다. 지금까지도 굉장히 어려운 같은데 코드를 여러개를 보여 드리기는 좀 어려운 부분이 있어서 핵심만 지금 짚고 있습니다. 질문이 가장 많은 바쳐 라고 보시면 되요. 업 캐스팅 잘 천천히 보겠습니다. 상속의 관계에서 하이클래스 의 인스턴스 를 상위 클래스 의 타입의 참조 형 변수에 할당하는 거다. 라고

23:00
되어있어요. 업 캐스팅된 어캐 스팅 아니면 상의 변환 이란 뜻이에요. 일반적으로 상위 클래스의 멤버에 만 접근이 가능하다. 보니 있습니다. 상위 클래스 의 엄중한 부분입니다. 상위 클래스의 메소드가 오버라이딩 이 된 경우에는 업 캐스팅이 되어 있어도 하위 클래스의 메소드가 수행 될 수 있게끔 할 수 있다. 라고 되어 있습니다. 자 제가 표 형태로 만들어 놨는데 3위 객체와 하위 객체 가 있어요. 상속을 받고 있는 상황이 겠죠. 자 그런데 용 객체를 상위 참조 형 변수에 각각 담았을 때 여기 포인트죠. 상위 멤버에 접근할 수 있다. 이번 가장 일반적인 개념 이구요. 상위 참조 형 변수의 하위 객체를 감게 되면 상위 멤버만 접근할 수 있게 되요. 이걸 업 캐스팅 이라고 이야기 합니다. 반대로 하위 참조 형 변수에 상위 객체를 담을 안됩니다. 이건 오류의 요. 하위 참조하면 수에 할 객체 잡는건

24:01
지금까지 우리 했던 거군요. 그러니까? 이거 두개는 우리가 했던 거에요. 상위 참조 형 변수의 상위 기기를 없는거 같은 참조 현실에 갇힌 클래스 명 의 인스턴스 를 담는 거 요건 중 까지 이구요. 지금 봐야 되는 거니 부분이죠. 요건 한번 보도록 하겠습니다. 코드를 보면서 같이 좀 볼 건데요. 코드가 조금 복잡해 졌죠. 자 하기 전에 개념을 한번더 잡고 하겠읍니다. 어 지금 보면 우리가 참조 변수 변수 라는게 있는데 얘를 운전자 라고 생각하세요. 3 주변 소 자 그다음에 하위 객체 랑 상위 개체가 있었죠. 사랑이 객체는 수동 자동차라고 보 싶네요. 그리고 하위 예체능 자동 오토 적 자동차 라고 보시면 됩니다. 이렇게 9분을 해 볼게요. 자 그러면 일단 상위 기체에서 하위 객체로 상속을 해 주고 있는 상태인 거죠. 그래서 하위 는 수정도

25:00
가능한 상태 거에요. 현재 3위는 수동 단 가능한 거죠. 어떤 느낌인지 아시겠죠. 자동 자동차 지만 수동 기능을 물려받아서 자동 기능을 추가하는 거라고 생각하시면 된다는 얘기에요. 자 그런데 운전자가 참 주면서 저 운전자가 어디에 타서 운전을 하느냐 요. 게 핵심이라는 거죠. 자 그러면 운전자도 참조 면서도 상위 클래스의 참 재면서 하위 클래스의 참조 변수 가 있겠죠. 그래서 얘도 조금 나눠 볼게요. 참조 변수 예를 들어서 수 대문 전자 이렇게 넓고 고요. 참조 변수를 하나 더해서 이번엔 자동 운전 잘하고 보겠습니다. 자 그래서 드라이버 져 운전자는 어디에 존야 에 대한 개념인데 한번 보도록 할게요. 자 이 상태에서 예를 들어서 자동 운전자가 여기에 탔다. 고 생각해 보세요. 자동 기능이 있는 자동차의 오토 자동차의 운전자 같았다. 고 생각해

26:01
보세요. 그러면 수정도 가능하고 자동 도 가능한 한 탱 겁니다. 왜냐하면 운전 기술을 이미 다. 상속을 받았기 때문이에요. 그리고 수동 운전자가 수동 자동차의 이렇게 타게 되면 어때요. 마찬가지죠. 수동 운전을 할 줄 아는 사람이 수동 자동차를 몰고 하는 거기 때문에 아무 문제가 안 된다는 거에요. 자 그런데 여기서 이제 서로 바꿔 찼을 때 가 문제가 되는 거죠. 요렇게 이렇게 바꿨다고 생각해보세요. 자 그러면 자동이 가능한 자동차의 수도 운전자 같았어요. 자 그런데 수동 운전자는 말 그대 는 수동 밖에 운전을 할 줄 모릅니다. 자동은 당연히 밟으면 가는 거지만 그렇게 생각하지 마시고 수정 밖에 몰 줄 모르는 사람이 자동 자동차에 탄 거에요. 그러면 자동 운영하는 기술이 없기 때문에 이것은 오류가 난다는 겁니다. 그런데 자동 운전을 할 줄 아는 사람이 수동

27:00
자동 차에 타게 되면 얘는 이미 수동 운전 기술을 습득 을 항해 조 상속을 받았으니까요. 그러니까? 자동 운전을 할 줄 알지 말 차동 운전을 못하는 것 뿐이고 수동 운전 도 가능하다는 겁니다. 그래서 스틱 운전도 가능하다는 거죠. 이해가 되시나요. 요. 부분이 이해가 좀 어렵습니다. 이 부분을 아직 코드로 접근을 해서 보도록 할게요. 자 구조가 쭉 나와 있는데 일단 슈퍼 뭐 젝트 가 있고요. 써모 젝트 가 있습니다. 슈퍼 오브젝트를 서버 오브젝트가 상성을 받고 있죠. 그리고 페인트와 들어 오늘 보세요. 페인트와 대로 회임 트와 들어온 사라와 있습니다. 그러니까? 페인트와 들어온 모두 오버라이딩 이 되어 있다. 이렇게 보시면 됩니다. 이것 외 시조 똑같은 메쏘드 명 똑같은 메쏘드 명의 존재하고 상송 을 받은 상태이기 때문에 졸다. 오브 라이딩이 되어 있습니다. 라고 보시면 되요.

28:01
자 그러면 이 실제 에 나왔던 기출 문제 인데 같이 한번 분석을 해보죠. 슈퍼 오브젝 체 b 참조 변수 생성 하고요. 그 다음에 서머 오브젝트를 생성해서 할당을 하고 있어요. 서브젝트 는 상속을 받은 최신 자동차 에요. 자동차 그 다음에 슈퍼 oz 체는 슈퍼가서 있지만 이 슈퍼 라는 것은 3위라는 개념이죠. 얘는 옛날 운전자 줘 옛날 자동차를 운전할 수 있는 운전자 한테 최신 자동차를 준 거에요. 이걸 그래서 업 캐스팅 이라고 한다는 뜻이죠. 그래놓고 b 점 페인 채널 호출하고 있습니다. 그러면 일단 얘는 슈퍼 오브 자체에 대한 것만 알고 있기 때문에 슈퍼 오브젝트에 있는 페인트가 호출이 되는 거에요. 변 놈이죠. 왔더니 폐 인체가 오버라이딩 되어있는거 아까? 확인 해 줘 그렇기

29:01
때문에 다시 페인트 아래쪽에 있는 걸로 내려갑니다. 자 그래서 페인트는 시행하려고 봤더니 슈퍼 점 들어오라고 되어 있죠. 자극의 핵심을 잘 보셔야 되요. 슈퍼 점 들어오라는 것은 상의 클래스 에 있는 대로 5 를 호출하는 뜻이에요. 만약에 슈퍼가 없이 그냥 들어오는 호출 했다고 하면 애가 실행이 될 거에요. 작은데 슈퍼가 붙어있기 때문에 상위 클래스에 있는 들어 5가 수행됩니다. 여기서는 슈퍼 라고 직전 언급을 했기 때문에 오버라이딩 으로 밑으로 내려가지 않아요. 이게 되시나요. 내부에서 클래스 내부에서 별도로 호출을 하는 검 때문에 슈퍼 오브젝트 비에 이름으로 호출을 하는게 아니죠. 그렇기 때문에 위로 올라갔다가 내려 오고 하는게 아니라 그냥 상의 메소드를 호출합니다. 그래서 얘가 수행되는 거죠. 이렇게 자 그러면 실제로 요기에 수행됩니다.

30:02
자 그런데 이 드로우 에서 호출되는 건 자기 자신이 줘 그래서 자기 자신을 다시 이렇게 수행하려고 넘어갔던 2 여기선 슈퍼 라든지 디스 라든지 정확하게 지칭 이 없죠. 이 상태에서 호출을 하게 되면은 오버라이딩 되었을 경우에 이 들어 5가 다시 밑으로 내려갑니다. 이렇게 가능 거에요. 작은데 포인트의 애가 실행 됐고 다시 실행 됐다고 해서 이 실행이 끝나는게 아닙니다. 이 실행은 여기까지 해야되요. 근데 여기가 아직 안 된거죠. 이 상태에서 다시 넘어간 거에요. 그래서 대로를 봤더니 들어오는 오버라이딩 다시 되어있으니까? 아래로 내려 온 거죠. 자 그래서 8번째 요. 섬 오브젝트가 일단 출력이 되는 거에요. 여기 첫번째로 출력이 됩니다. 그리고 이 들어가 끝났으니까? 들어갈까? 나타내면 이해가 끝났던 얘기잖아요. 그 다음에 슈퍼 뭐 젝트 가 두 번째로

31:00
출력이 되는 거죠. 이렇게 조금 복잡하게 들어갑니다. 어떻게 스팅은 항상 이렇게 복잡하게 진행되요. 자 그래서 화살표로 이렇게 쭉쭉 그어 가면서 손으로 그어 가면서 최소한 이해를 할 수 있어야 됩니다. 그래서 결과는 슈퍼 뭐 제트가 먼저 나오는게 아니라 서버 오브젝트가 먼저 출력되고 그 다음에 슈퍼 오브젝트가 출력되는 순서로 결과가 나올 거다. 라는 부분입니다. 좀 어렵죠. 코드를 많이 보실 필요가 있어요. 이 후보는 넘어갈게요. 다음으로는 추천 클래스 입니다. 추천 클래스를 생성하는 방법 운영하는 방법이에요. 추상 메소드는 s 트랩 특히 키워드를 이용해서 서는 분만 있고 구현은 하지 않는 메소드 를 이야기를 해요. 그래서 이 추상 메소드가 클래스 에 1 도 포함이 되어 있으면 그 클래스는 추상 클래스 라고 이야기 할 수 있습니다. 추석 메소드의 존재여부를 따라서 추상 클래스 일지 아닌지를 판단할 수 있다는 거죠. 자 그런데 추상 메소드는 구현이 되어있지 않은

32:01
매 소 되기 때문에 상속을 받아서 반드시 오버라이딩 을 해줘야 되요. 모든 추상 메소드는 오버라이딩 해주지 않으면 하위 클래스 역시 추장 클래스 로 인정됩니다. 요거 잘 판단하셔야 됩니다. 코드를 더 볼까요. 자 이렇게 볼게요. 위쪽에 추상 클래스가 하나 생성이 되어 있습니다. 쉐이퍼 라고 되어있구요. 추상 메소드 도 여기부터 있으며 항상 추상 이에요. 최상 메쏘드 도 1 정의를 하고 있는데요. 상에 중간 5 가 빠졌어요. 이게 없죠. 중간 없기 때문에 얘는 추상 메소드 고 그렇기 때문에 얘는 추상 클래스 다. 이렇게 볼 수가 있습니다. 자 그래서 e 초상 클래스를 써클 과 은행 챙 글 클래스가 상속을 받고 있죠. 그래놓고 이 추상 메소드를 오버라이딩 하고 있습니다. 구조 파악에 되시나요. 이 상태에서 서클과 위액 챙 글

33:00
인스턴스 를 하나씩 생성해서 각각 대부분 을 호출하게 되면 이드로 갔다가 o 라이딩 대형 신이 까? 각각 내려가서 원을 그립니다. 사각형을 그립니다. 이렇게 출력을 할 수 있게 된다는 거죠. 자 그러면 이거 없이 오버라이딩 더펫 상성 없이 그냥 이드로 를 구현하면 더 편할 거 가잖아요. 그런데 이렇게 하지 않는 이유는 기본적으로 공통적인 채를 잡기 위해서 해요. 예를 들면 지금 들어오라 는 메쏘드 명을 동일하게 썼는데 들어오라는 메소드 명을 동일하게 안 쓸수도 있죠. 예를 들어서 드문 써클 이라고 개발할 수도 있잖아요. 여기도 마찬가지죠. 들어온 가 아니라 뭐 들어올 리 액팅 걸 이렇게 메쏘드 명을 지정할 수도 있구요. 이렇게 되면 이제 객체와 이 객체를 사용하려는 사람은 각각 도형을 그리는 원을 그리거나 1 악행을 그린 앤 메소드 명을 각각 파악하고 있어야 되요. 그렇죠. 그런데 시스템을 이렇게 추천 클래스 로 묶어

34:01
두게 되면 내부 표현은 어떻게 할지 모르겠지만 어쨌든 호출 명은 동일하게 고정을 시킬 수가 있습니다. 이해 되시죠. 그래서 예를 들어서 공부 라고 한다면 영어공부 뭐 영어스터디 뭐 여러가지 표현을 쓸 수 있지만 공부라는 추상 클래스 는 묶어 버렸다. 고 하면 무조건 공부라는 메쏘드 록 영어 공부하는 9 봉분 하든 수학 공부를 하든 다양한 표현을 할 수가 있게 되는 거죠. 이게 추상 클래스가 가지는 힘이에요. 시스템적으로 구성을 딱 맞춰서 진행할 수가 있다라는 거죠. 이런 개념이 있다. 요. 라고 보시면 되겠습니다. 다음으로 인터페이스입니다. 인터페이스는 거의 잘 안나오게 할 거에요. 일단은 다중 상송 에 문제점이 라고 되어있어요. 자바는 원칙적으로 졸 이상 해삼이 클래스를 상속받는 다중 상속을 금지하고 있다고 되어 있어요. 예를 들면 클래스 a 가 있구요.

35:01
플랫을 a 를 b 가 상속받고 시가 상속 받았다고 생각해 보세요. 자 그러면 요렇게 항성을 받고 있는 상태일 거에요. 그리고 다시 g 라는 클래스가 있는데 2d 라는 클래스가 다시 또 이렇게 주기를 상속 받는 다고 생각해 보세요. 자 그러면 여기에 어떤 특정 메소드는 여기에 존재하는 거 라고 했을 때 이 메소드가 이렇게 거쳐 오는건지 이렇게 거쳐 오는 건지 알 수가 없죠. 여기서 임의로 하나를 정하는게 아니라 어 이제 지금 코드 기 때문에 정확하게 특정 의미만 가지고 있어야 하는데 이거는 이거 또 되고 이것도 되는 상태가 되는 거잖아요. 그렇기 때문에 이거는 문제점이 있는 거죠. 그래서 이거를 방지하고자 이런식으로 다. 중상 성원 하지 않게끔 규칙이 잡혀 있는 거에요. 자 그래서 정리를 다시 아래쪽에서 있죠. a 에 멤버가 상속되는 경로가 이 건지 이건 지니 불분명해서 부작용이 발생할

36:00
확률이 높아진다. 그래서 이러한 문제를 방지하면서 다중 상속 여러가지를 상속 받으면 당연히 2.1 있겠죠. 그렇긴 음이 인터페이스 다는 겁니다. 인터페이스 를 보도록 할게요. 인터페이스가 뭐냐 모든 메소드가 추상 메소드 럼은 구성된 클래스 라고 되어있어요. 방금 추천 클래스 같은 경우에는 여러가지 이 메소드가 있는데 그 중에 하나가 라도 추상 메소드가 면 추상 클래스가 되는거 였구요. 지금은 모든 메소드가 추상 메소드 여야 인터페이스 라고 할 수 있다. 라고 써 있는 겁니다. 자 그리고 정리하는 키워드도 달라요. 인터페이스 와 익스 10g 가 아니라 인 플리 맨 치 키워드를 이용해서 구현하고 상석 봣습니다. 용어 판단을 잘 하셔야 되요. 자 그리고 인터페이스 할 수 있는 이유는 상속 같은 경우에는 기존 클래스의 멤버를 확장하는 기능을 확장하는 개념을 가지는데 인터페이스 는 이니 확장되어 있는 클래스 의 기능을 제안하거나 변경

37:02
하는 다. 형상의 개념을 가진다. 고 돼 있어요. 정 반대 개념 이라는 거죠. 인 개념을 코드를 보면서 같이 한번 보도록 할게요. 아래쪽이 코드를 제가 오른쪽이 좋은게 낫죠. 이렇게 같이 한번 보도록 하겠습니다. 일단은 구조 왼쪽에 있는 구조를 먼저 같이 좀 볼게요. 조금 어려우니까? 천천히 보겠습니다. 일단 앤 인터페이스가 조개 점과 되어있어요. 커피 인터페이스 랑 쿠키 인터페이스가 있죠. 그리고 여기에는 각각 된 인 그 커피와 이국희 라는 추상 메소드가 존재하는 상태에요. 그리고 카페 라는 클래스가 1 정리가 되어 있구요. 인플레 멘 츠 인터페이스의 2개를 상석을 받고 있습니다. 자 이렇게 상속을 받게 되면 추상 클래스 드 인터페이스는 어쨌든 그 안에 있네 추상 메소드를 전부 오버라이딩 을 해줘야 되요. 자 그래서 드링크 커피

38:00
오버라이딩 하고 있고요. 이 쿠키도 오브 라이딩을 하고 있습니다. 그리고 카페 만에 별도 메소드가 확장 대형이 줘 에서는 총 3가지의 메소드가 존재하는 클래스 인데 그 중 두 가지가 인터페이스를 통해서 상속받은 거에요. 그래서 카페에 클래스의 기능은 커피 마시는거 쿠키를 먹는 것 그리고 재활을 하는 것 까지 총 3가지 기능이 존재하는 겁니다. 이해 되시죠. 자의 상태에요. 이 상태에서 카페 인스턴스 하나 생성 하구요. 카페형 참조 변수 에 집어 넣습니다. 이렇게 되면 요케 이라는 카페는 커피를 마시는거 그 다음에 키를 먹는거 그 다음에 대화를 하는 거 요. 3가지가 전부 가능해요. 이거 자체이기 때문에 자 그런데 유호 카페에 k 를 커피 인스턴스 참 주 변수에 집어넣는

39:02
겁니다. 이렇게 되면 커피 라든지 쿠키는 사항이죠. 얘네들은 상위의 상위 사랑이 인터페이스입니다. 상승을 해준 거기 때문에 그러니까? 사랑이 참 주 변수에 하위 객체를 집어 넣는 거죠. 그럼 이게 업 캐스팅 이에요. 자업 캐스팅을 생각 잘 해주셔야 됩니다. 업 캐스팅을 한다고 해서 2 객체 자체가 k 라는 객체 자체가 3가지 기능을 전부 했던 k 라는 객체 자체가 쪼개지는 게 아닙니다. 그중에 커피 에 해당하는 것만 접근할 수 있게 되는 거에요. 그러니까? 드링크 커피는 가능해요. 우리가 앞에서도 이야기 했지만 이제 잉크 커피는 호출하게 되면 일로 갔다가 오버라이딩 개인의 하고서 아래로 내려간 넘 있잖아요. 요기 가능하기 때문에 이 건 괜찮은데 나머지 이 바퀴나 토크는 안됩니다. 왜냐하면 이 커피의 이 쿠키랑 초코 에 대한 메세지가 없어요.

40:01
그렇기 때문에 호출 자체가 불가능한 거죠. 객 치안에 는 존재하지만 호출이 안된다는 겁니다. 하는 방법을 모른다. 이렇게 생각하시면 되겠죠. 그래서 이 상태에서는 커피만 마실 수가 있게 되요. 다시 2k 라는 객체를 쿠키 형 참 주면 쇄 담 하여 마찬가지 업 캐스팅이 줘 이 쿠키는 할 수 있는 e 쿠키 밖에 없어요. 그렇기 때문에 드링크 거 폐 안되구요. 토크 안됩니다. 2 쿠키 만 가능해 지는 거죠. 이것도 마찬가지 업 캐스팅 이에요. 자 그래서 위에서 봤던 내용과 다시한번 정리를 해보면 뭐라고 써 있죠. 상속은 확장이라는 개념이지만 그래서 인플레 많지 를 통해서 커피란 쿠킹 이에 대한 요소를 받아서 확장 했잖아요. 그런데 인터페이스는 인터페이스 자체는 확장된 클래스의 기능은 제안하거나 변경 하는 다양성의 개념을 구현할 수 있다. 라고 되어 있는 겁니다. 요건 을 조금 더 정리를 해서 한 번

41:01
더 말씀을 드리자면 이 좀 어렵죠. 커피 전문점이라고 생각해보세요. 커피전문점 인데 만약에 커피전문점에서 키 라던지 주스 라든지 그런 것들을 추가해서 팔고 싶으면 얘를 확장을 하면 됩니다. 또 넨 커피를 팔다가 장사가 잘 안 돼요. 그래서 커피 말고 다른 걸 해볼까? 라고 하면 실제로는 실제 생에서는 싹다. 들어 없고 쉴수 전문점은 별도로 땀 차 해야 되죠. 작은데 디지털 세계에서 이럴 필요가 있냐는 겁니다. 그래서 실제로는 어떻게 하냐면 모든 요소를 포함하는 전체 종합 커피숍 객체를 하나 만들어 요. 그래서 여기서 커피를 만들고 실수를 만들고 쿠키도 만드는 거죠. 이 객체를 하나 일단은 만들어 둔 다음에 그때그때 필요할 때 예를 들어서 여름에 커피가 잘 안 나간다. 싶으면 준수 전문적으로 바꾸는 겁니다. 그러면

42:00
주스 타입으로 업 캐스팅을 하면 되요. 그러면 그 때부터는 커피가 안되고 후 키가 안 되고 주스 만 가능해 지는 거죠. 이 상태에서 이제 날이 좀 따뜻해져서 가을쯤에 커피란 크기가 좀 잘 팔려요. 그러면 주스를 빼 뭐 되고 커피랑 쿠키 만 할 수 있게끔 타입 을 지정하면 되요. 5 캐스팅 된 것도 이런 식으로 하게 되면 하나의 객체로 다양한 일을 할 수 있게 됩니다. 용의 업 캐스팅과 다형성 요. 개념이라고 보시면 됩니다. 다음으로는 예외처리 입니다. 여기서부터 좀 쉬워요. 예외처리 라는것은 개념만 하시면 되요. 실행 도중에 문제가 발생하면 프로그램이 멈추거나 종료되는 것을 막기 위해서 예외를 해결하는 것 그걸 예외처리 라고 이야기는 해요. 문제 랑은 좀 다른 개념입니다. i 쪽에서 있죠. 문법적인 부분 때문에 실행 전에 발생하는 문제를 5 비유 라고 하는데 문법 오히러 문법이나 표현식에 문제는 없지만

43:00
의도치 않은 작동의 입력으로 문제가 발생하는 걸 예외 라고 합니다. 우리가 흔히 아이디랑 패스워드 를 잘못 입력하는 경우 이런 것들을 예매 라고 이야기를 해요. 실제 프로그래밍은 정상적으로 아이디를 입력하고 패스워드를 입력했을 때 돌아가는 형태인데 이걸 잘못 입력했을 때의 대한 처리가 없으면 예를 들어서 사이트 아버지는 거예요. 네이버에 로그인을 하는데 로그인을 잘못했다고 사이트가 꺼지면 그 사이트 이용 안하겠죠. 이런 느낌이라고 보시면 됩니다. 그래서 예외에 대한 처리를 반드시 해줘야 된다. 숫자 입력을 해야 되는데 문제의 입력한 사람들 꼭 있거든요. 그런 부분에 대한 예외를 처리를 해야 되는 얘기죠. 작은데 이 예외가 모든 영역에서 발생하는 건 아니기 때문에 예 외설 식별할 영역을 별도로 지정을 해야 된다는 얘기입니다. 그래서 나와있는게 아래쪽에 트라이 캐치 파이널 이경 얘기에요. 어렵지 않습니다. 이것만 보시면 되요. 트라이 라는 00 안에 코드가 적혀

44:00
있으면 이 코디에서 예외가 발생했을 때 애가 실행 된다. 라는 개념이 구요. 예외가 발생 하든 안하든 무조건 실행되는 영역은 연기 라고 보시면 되요. 얼짱 초 트레이아 안에 있는 코드에서 예외가 발생하면 캐치 블럭이 수행된다. 이렇게 보시면 됩니다. 그리고 예매 발생 여부에 상관없이 파이널 위에 있는 영역에 있는 코드는 무조건 수행된다. 이렇게 보시면 됩니다. 어렵지 않습니다. 6 세 개의 요. 다음으로 최근에 이 스레드 라는 개념이 문제의 나왔기 때문에 잠깐 제가 언급을 해 놨습니다. 실제로 훨씬 더 복잡한 부분이긴 하지만 어쨌든 최대한 문법 의 집중해서 공부를 하시면 되요. 쓰레드 라는 것은 하나의 프로세스에서 똑같은 많이 해야겠다는 하나의 프로세스에서 줄 이상의 일을 동시에 수행하는 걸 이야기를 해요. 술의 게 수행을 위해서 해당 클래스 의 순 헤드 클래스를 3 속하거나 런 에이블 인터페이스를 구현하면 된다. 라고 되어 있죠. 이건 코드로 보면

45:01
됩니다. 이거 와 이거 추가 집니다. 다정 쓰레드 작업시에는 각 쓰레드 길이 정보를 주고받을 수 있어서 처리과정에 오늘 을 줄일 수 있다. 쓰레드 리 구현할 때는 반드시 런 메소드를 오버라이딩 해야 된다. 라고 되어 있죠. 요. 개념을 코드를 통해서 같이 한번 보도록 할게요. 스웨이드 클래스는 상속을 받아서 구현 하는 방법이에요. 문법적인 부분을 먼저 보시면 됩니다. 자 여기 보시면은 익스텐드 하고 쓰레드 클래스를 상속받고 있죠. 이건 이미 만들어져 있는 거에요. 우리가 정의를 할 필요가 없습니다. 자 그 상태에서 넌 이라는 메소드를 오버라이딩 하고 있어요. 재정이 이렇게 되면 쉐딩 아 수행되면 자동으로 요. 울러 나네 있는 코드가 수행된다. 이렇게 보시면 되겠습니다. 여기서 있죠. 자 그런데 약간 다른 개념이 뭐냐면 호출할 때 가 달라요. 자 박수를 일단은 인스턴스 생성을 했어요. 그 다음에 런을 호출 하는 게 아니라 스타트를

46:01
호출 하 죠. 요게 약간 다르죠. 요. 부분을 주의하셔야 되요. 그래서 스레드를 수행하는 메소드는 스타트 며 인스턴트가 러 널 수행해 주는 거에요. 이걸 되시나요. 그래서 스레드와 런 스 차체 요. 세가지를 잘 9분할 수 있으셔야 된다. 얘깁니다. 다음으로는 런 a 벌 인터페이스를 통해서 상승을 하는 방법입니다. 자 여기서 는 인플레 맨 칠언 에이머리 라고 되어있구요. 마찬가지입니다. 런 메소드를 재정이 하는건 똑같아요. 근데 위쪽 아래쪽 이 다른 겁니다. 여기 위해서는 위해서는 방금 이 스텐 즈 쓰게 되었구요. 여기서는 인플레 맨 치은 언행이 버리죠. 자 그리고 호출할 때도 달립니다. 스타 채는 똑같은데 위쪽이 다르죠. 아까는 박스형 참조 변수의 박스 인스턴스 를 생성해서 호출을 하는 형식이었는데 여기서는 쓰레드 객체를 생성을 하고 그 안에 생성자로

47:01
박스형 인스턴스 를 생성하고 있어요. 그래서 호출하는 것에 생성하는 방식이 약간 다릅니다. 이 부분을 잘 책 해주셔야 되요. 런 에이블 같은 경우에는 이 스레드 라는 부분에 생성 않은 부분이 조금 헷갈릴 수 있으니까? 판단을 잘 해주셔야 됩니다. 보통 이렇게 문제가 나온다고 하면 결과는 어차피 이걸 테니까? 결과를 물어 보지 않구요. 이런데 빈칸이 생겨요. 이런데 이런데 빙상 이 생깁니다. 그러면 요게 요거랑 같은 개념이고 요기 있는 쓰레드가 들어가고 이런식으로 문법적 인 구조를 파악하고 있으면 문제를 푸는 데 크게 어려움을 없을 거에요. 이걸 되시나요. 다음으로 멀티 섀딩 나와있네요. 멀티 스레딩 은 다수의 순 애들을 동시에 실행하는 게 당해 볼기 섀딩 이겠죠. 특별한 건 아니구요. 여러 개나 c 기 때문에 자원의 소매는 줄이지 있을지 몰라도 공유를 하니까요. 충돌이 일어날 가능성 복잡함이 이런것들 때문에 문제가

48:01
발생할 수 있다. 이것은 상식적으로 파악할 수 있는 부분이니까? 5 넘어가면 될 것 같구요. 이 다음 3개의 상쾌 전이는 런 에이블 넌 인 블록 때 의 상태로 아닌 라고 되어 있습니다. 러닝 브랜 수 차체 메소드를 통해서 실행이 준비가 된 상태고 이상태 다음으로 러닝 런 메소드를 스타트가 호출해서 실행되고 있는 상태 그 다음에 블록은 여러가지 요인으로 인해서 잠시 멈춘 단계 그리고 데드 나 더는 수 뇌도 수행이 완료된 상태 이렇게 9분을 한다. 정도 파란을 하면 되겠습니다.


728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/HDpOSAh5Ecg?si=g93ofRLlBkEdkX3i

1. 객체지향 방법론

1-1. 객체지향 방법론 소개
- 객체를 디지털 객체로 표현하여 객체의 특성과 관련된 기능을 정의함
- 객체의 속성은 상태 값, 메소드는 연산이나 객체가 가진 고유의 순기능을 의미함
- 객체는 서로 다른 객체 간의 관계를 형성하며, 이를 통해 다양한 기능을 수행함
- 객체지향 방법론의 장점은 실제 생애와 유사한 구조로 개발 가능하고, 확장성과 유지 보수가 용이함
- 단점은 객체 설계가 어려우며, 객체의 규모가 클 경우 개발 속도가 느려짐

1-2. 객체지향 기술의 구성 요소
- 객체의 타입을 정의하는 클래스를 통해 유사한 성격의 객체를 묶고, 객체가 가진 속성과 메소드를 정의함
- 객체의 인스턴스는 특정 클래스에 의해 구현된 좁은 범위의 객체로, 클래스에 의해 정의된 매서드를 수행함
- 메시지는 객체 간의 통신을 위한 인터페이스로, 메소드는 메시지에 의해 객체가 수행해야 할 연산을 정의함
- 캡슐화는 객체의 속성과 메소드를 외부 영향으로부터 보호하는 방법임
- 추상화는 클래스의 공통된 요소를 추출하여 상위 클래스를 구현하는 방법임

1-3. 객체지향 기술의 적용
- 추상화는 현실 세계를 보다 자연스럽게 표현할 수 있도록 함
- 상속은 하위 클래스가 상위 클래스의 속성과 메소드를 물려받아 정의하지 않아도 됨을 의미함
- 다형성은 상위 클래스의 멤버를 하위 클래스에서 다시 정의하지 않아도, 상위 클래스의 속성과 메소드를 이용해 동일한 메시지에 대해 서로 다른 형태를 가질 수 있게 함
- (중요) 객체지향 방법론은 객체와 객체 간의 관계를 정의하여, 이를 통해 다양한 기능을 구현 가능하게 함

2. 객체지향 프로그래밍과 디자인 패턴

2-1. 객체지향 개발 절차와 원칙
- 객체지향 개발 절차는 문제 해결을 위한 모델링과 그래픽 표기법 사용
- 다양한 그래픽 표기법을 사용하여 분석 절차를 진행함
- 장단점 분석에서는 미시적 요소와 거시적 요소를 고려함
- (중요) 책임 원칙에 따라 클래스는 제공하는 모든 기능이 하나의 문제만 해결하도록 설계되어야 함
- (중요) 상위 클래스의 기능을 수행하기 위해 하위 클래스는 상위 클래스의 제약을 준수해야 함

2-2. 객체지향 설계 원칙과 개선사항
- 리스크 어프로치 원칙에 따라 하위 클래스는 상위 클래스의 기능이 호환되어야 함
- 사용하지 않은 인터페이스는 구현하지 않아야 함
- (중요) 상위 클래스의 변경 사항이 하위 클래스에 영향을 미치지 않도록 구성을 해야 함
- 인터페이스 풀링 원칙에 따라 하나의 포괄적인 인터페이스보다는 다수의 구체적인 인터페이스를 분리해서 개발하는 것이 좋음

2-3. 디자인 패턴의 특징과 예시
- 디자인 패턴은 반복적인 문제를 해결하기 위한 설계 패턴을 일반화한 것
- 생성 패턴은 문제 해결이 핵심이며, 기능 향상이 아닌 문제해결이 중심임
- 디자인 패턴은 구조 파악, 원활한 의사소통, 생산성, 재사용 등의 특징을 가짐
- 가격 탄력성이 높은 경우, 가격 인하가 판매량 증가로 이어질 수 있음
- (중요) 패턴에 대한 예시를 통해 이해하고, 실제 문제 해결에 적용해야 함

3. 객체 생성과 패턴에 대한 이해

3-1. 객체 생성과 패턴의 이해
- 객체 생성에는 팩토리 메소드와 추상 팩토리 메소드가 있음
- 팩토리 메소드는 객체 생성을 위한 인터페이스로, 상위 클래스에서 하위 클래스에 객체 생성을 위한 메소드를 정의함
- (중요) 추상 팩토리 메소드는 클래스 생성과정을 단계별로 분리하여 복잡한 객체 생성 과정을 줄임
- 패턴을 활용하여 객체 생성 코드의 복잡성을 줄임

3-2. 다양한 패턴과 예시
- (중요) 인터페이스를 가진 클래스들이 함께 사용될 때, 패턴을 통해 코드를 단순화함
- 브릿지 패턴은 복잡한 클래스를 기능과 구현으로 분리하여 두 클래스를 다리처럼 연결함
- 데코레이터 패턴은 기존 클래스의 메소드에 새로운 기능을 추가하거나 확장함
- 행위 패턴은 객체 하나에서 모든 문제를 해결하는 것이 아니라, 문제 해결을 위한 순서대로 해결하는 패턴임

3-3. 강의 요약과 복습
- 각각의 패턴은 다른 상황에서 다른 요구사항을 충족시키기 위해 사용됨
- 각 패턴은 다른 형태의 데이터와 상황에서 적용될 수 있으며, 그 중 하나를 선택하여 사용함
- 알고리즘은 문제 해결을 위한 구체적인 방법이며, 다른 유형의 패턴과는 별개로 사용됨
- (중요) 강의에서 다룬 모든 패턴을 암기하는 것이 중요하며, 이해와 암기 모두 필요함

00:01
자 세 번째 짱입니다. 자바 언어 같이 공부를 해볼 텐데 객체지향 언어 라는 개념이 있기 때문에 객체지향 방법론 은 이쪽으로 따로 제가 정리를 해 놨어요. 여기에 1 과목에 해당하는 부분을 수도 있고 또는 이자가 목에 해당하는 부분을 수 있는데 아무래도 우리가 객체지향 언어를 공부를 해야 하니까? 개체 재앙 관련된 부분은 같이 공부 하는게 맞을것 같아서 이쪽으로 좀 빼 낳습니다. 같이 한번 보도록 하죠. 일단은 객체지향 방법론 이 뭔지에 대해서 나와 있습니다. 현 신의 개체들을 디지털 3길 객체로 배양하여 표현하는 거다. 라고 되어 있고요. 객체의 특성들을 추 상황에서 객체 속성 으로 표현을 하고 객체 의 특성과 관련이 있는 기능을 메소드로 표현을 한다고 되어 있습니다. 속성과 메소드에 대해서 설명이 되어 있는 겁니다. 속성은 상태 값이 라더니 자료구조 이런 것들을 이야기하는 거구요. 그 다음에 메소드는 속성에 대한 이런

01:02
것들에 대한 연산 이나 이 객체가 가지는 고유의 순기능 이렇게 되어있어요. 그래서 메쏘드는 기능이고 속성은 갑시다. 이렇게 생각을 하시면 됩니다. 각 객체들은 선호 통신을 통해서 개최한 관계를 표현할 수 있다. 라고 되어 있죠. 최지향 방법론 의 장점과 단점이 나와 있습니다. 장점은 실제 생애 와 유사한 구조로 개발을 할 수가 있구요. 확장성 유지 보수용 있어 개발 속도 자체가 향상될 수 있구요. 규모가 큰 프로그램의 개발도 무리 없이 가능 하다. 못해 여기 있습니다. 반면에 단점으로는 개발 자체는 쉽지만 객체 자체 설계는 어렵다. 객체 자책의 설계가 되어 있으면 개발은 굉장히 쉬워 지는데 객체 자체의 개발은 어렵단 뜻이에요. 객체 자체의 규모가 큰 경우에는 속도가 느려 줄 수 있다고 되어 있죠. 이렇게 장점과 단점을 구별할수 있어야

02:02
되요. 다음 객체지향 기술의 구성요소 나와 있습니다. 항상 용어가 중요합니다. 용어를 정확하게 파악하고 있어야 영상을 보거나 아니면 책을 봤을 때 또는 여러가지 설명을 봤을 때 그걸 확실하게 이해할 수가 있어요. 일단 첫번째로 클래스 가장 중요한 개념이 에요. 객체의 타입을 정리하고 구현하는 트리 라고 되어 있습니다. 유사한 성격을 가진 객체 들의 공통된 특성을 추상화 한다니 라고 되어있구요. 객체가 가진 속성과 객체가 수행하는 메소드를 정의 한거 다. 똑같은 얘기에요. 취 오늘 구조체와 구조체를 건드리는 함수를 하나로 묶어서 발전시킨 거다. 라고 되어 있죠. 그 정도까지 보면 되겠구요. 이 클래스를 통해서 생성되는 아이들이 객체의 어 플레이스 에 의해 구현되는 각각의 대상들을 객체 라고 이야기합니다.

03:01
객체 마다. 고유한 속성을 가질 수 있구요. 클래스에서 정의한 매수도 수행이 가능하다. 객체 맞 아요. 인스턴스는 특정 클래스에 의해 구현된 좁은 범위의 객체 다. 라고 되어있어요. 객체를 좀 넓은 범인 거구요. 인스턴스는 특정 클래스의 객체 이렇게 생각하시면 됩니다. 여러 형태로 굉장 나올 수 있기 때문에 조심하셔야 되요. 메세지는 객 책은 통신을 위해서 서로 주고받는 인터페이스를 멧세지 라고 하구요. 인 요청 메시지를 통해서 매 선우 수행이 시작된다. 이렇게 되어 있습니다. 메소드 앞에서 개 섬 이야기 했죠. 메시지의 의해서 객체가 수행해야할 연산을 정의해 둔 거다. c 언어의 함수와 비슷한 같은 개념을 가진다. 이렇게 보시면 되겠습니다. 일단 용어가 요. 정도 되구요. 다음으로는 객체지향 에서 필요한 기술 사용하는 기술 마찬가지 문제에 잘

04:01
나오는 편입니다. 꼼꼼하게 보도록 할게요. 문장 자체를 외우는 것보다는 개념을 이해 하셔야 되요. 그래서 같은 개념으로 설명하고 있는 문장 보기를 선택할 수 있어야 됩니다. 아시겠죠. 자 그래 더 제가 밑줄을 따로 앉혀 놓은 거에요. 첫번째 같이 점포 줘 캡슐 하라고 되어 있습니다. 문제해결에 필요한 속성과 메소드를 하나노 먹는거라고 내어 있습니다. 하나의 클래스 안에 문제해결에 필요한 데이터 들과 그 기능들을 묶거나 짠 뜻이에요. 그러면 여기저기 왔다갔다. 할 필요가 없기 때문에 인터페이스가 단순해 진다. 라고 되어 있는 거죠. 자 그리고 이렇게 묶어둔 이유가 있는거예요. 이렇게 묻기만 했으면 시 언어의 구조체와 함수 가 단순하게 모여 있는 것에 지나지 않습니다. 자 그런데 이 다음부터 가 중요하죠. 캡슐 화의 가장 큰 목적으로 실제 구현되는 내용의 일부를

05:01
외부로부터 감출 수 있어요. 그래서 내부 속성과 메소드를 외부의 영향으로부터 보호할 수 있도록 설계하는 방법 2 정 보 민님 입니다. 캡슐 화 를 통해서 정보 은닉 을 실현할 수 있는 거에요. 이해 되시죠. 예를 들면 우리가 식당에 갔을 때 주방이 따로 9분되어 있잖아요. 그리고 주방에서 사용하는 예를 들어서 멋있긴 아 또는 화로 여러가지 재료들이 별도로 9분해서 거기 모여 있죠. 자 그렇게 되면 왔당 핥자 할 필요없이 주방에서 모든 요리를 할 수가 있습니다. 홀로 나올 필요가 없죠. 그리고 주방 안에서 벌어지는 여러 가지 일들에 대한 노출을 막을 수도 있어요. 자 그래서 이렇게 주방을 따로 9분하는 캡슐 화하는 상태의 때문에 정보 은닉 이 가능하다. 이렇게 보시면 되겠죠. 다음은 추상 합니다. 요건 계속 나오고 있죠. 클래스 들의 공통된 요소를 추출해서

06:00
상위 클래스를 구현하는 방법 이것은 근데 우리가 er 다이어그램 이라든지 여러 요소에서 계속 봤던 개념이죠. 여기서 똑같은 개념이 들어가는 거예요. 3위 클래시 는 하위 클래스의 구현 을 위한 태를 제공한다. 상세한 구현은 하위 클래스가 담당한다고 되어 있습니다. 이제 추상화의 개념 이에요. 현실 세계를 보다. 자연스럽게 표현할 수 있다라고 되어있구요. 다음으로는 방금 봤던 추상화 에서 이야기한 부분이에요. 상속 입니다. 상위 클래스의 멤버를 속성과 메소드를 멤버라고 이야기를 해요. 멤버를 하위 클래스에서 물려 받도록 하는 것 그래서 상위 클래스의 이셨던 속성과 메소드 는 하위 컬 s 에서 다시 정의하지 않아도 쓸 수 있다는 뜻이에요. 는게 상속 이구요. 다음으로 다형성 입니다. 다형성 이라는 것은 이 객실 지양 개발이 궁극적인 목표가 될 수 있는데 상속된 여러 하인 개체들이 서로 다른 형태를 가질 수 있게 하는 성질이다. 라고 되어 있습니다.

07:00
다형성 이니까요. 서 다른 형태를 가지게 된 특성 이란 뜻이죠. 오버로딩 이나 오버라이딩 등의 기술로 동일한 메쏘드 명으로 도 서로 다른 작업을 할 수 있게 할 수 있습니다. 오버로딩 과 오버라이딩 체크를 잘 해주셔야 되요. 이건 이따가 코드로 나올 테니까? 한번 읽어보시고 이 부분을 다시 다루겠습니다. 둘 이상의 클래스 해서 동일한 메시지에 대해 서로 다르게 반응할 수 있도록 한다고 되어 있습니다. 하나의 이름으로 하나의 메시지로 하나의 유형으로 서로 다른 형태를 가지고 서로 다른 일을 할 수 있게 한다. 요게 다양성의 특징입니다. 여기까지 특징이 나와 있는 거구요. 다. 양으로는 객체지향 개발 절차 나와있습니다. 여기서는 영어 다른 외우듯이 핵심만 보시면 되요. 문제의 굉장히 자주 출제되고 있죠. 런 바우는 다양한 그래픽 표기법을 이용해서 모델링을 한다고 되어 있어요. 그래픽 표기법이 핵심입니다. 넘 바우 에 분석 절차 는 객체

08:01
동적 기능 책 종기 이 순으로 진행이 되구요. 각각 모델링에서 어떤 그래픽 표기법을 사용하는 지 체크를 해주셔야 되요. 아시겠죠. 눈까지 보시면 될 것 같구요. 장 다음에 붙이 같은 경우에는 미시적 거시적 이라는 말이 나올 거고요. 다음 제이콥스는 유스케이스 를 활용 한다. 라고 되어 있고요. 그 다음에 코드와 연어는 er 다이어그램을 사용한다고 되어 있죠. 그 다음에 없으 로그 분석과 설계 과한 9분이 없다. 그 다음에 고객 명세서를 평가 해서 연속적으로 무언갈 수행한다. 이런 키워드가 나옵니다. 각각의 키워드가 서로 다르기 때문에 이 키워드는 기반으로 이해가 어떤 분석 기법이다. 이렇게 9분을 해 주시면 됩니다. 넘어 갈게요. 다음은 객체지향 설계 원칙 입니다. 이 원칙을 지켜서 객체지향 개발을 하지

09:02
않으면 객체지향 개만 이라고 할 수는 없다. 먹고는 개념이라고 보시면 되요. 첫번째로 다니는 책임이라고 되어 있죠. 하나의 클래스가 제공하는 모든 기능이 하나의 문제만 해결할 수 있도록 설계가 되어야 한다. 라고 되어 있어요. 이 부분은 음식도 와도 관련이 있겠죠. 하나의 문제 해결을 위해서 만 클래스가 변경이 되며 낮은 혈압도 높은음 집도 유지가 고장이 된다. 단일 책임 요건 앞에서 계속 비슷한 내용을 같이 봤어요. 내려가서 개방 회생을 라고 되어 있습니다. 확장에 대해서는 개방적 이어야 하고 수정에 대해서는 폐쇄적 이어야 한다고 되어 있습니다. 의미와 용어가 같은 개념 단어가 들어가기 때문에 그렇게 어려운 개념은 아니죠. 자 그 다음 리스크 어프로치 원 이라고 되어 있어요. 하위 클래스는 상위 클래스 의 기능이 호환될 수 있어야 된다. 상위 클래스 의 기능을 수행하기 위해서 하위 클래스는 상위 클래스의

10:01
제약 쌍을 준수해야 된다고 되어 있죠. 서로 역할을 치환 할 수 있어야 된다는 뜻이니까요. 그렇게 까지만 보시면 될 것 같습니다. 다음은 인터페이스 풀링 이 하나의 포괄적인 인터페이스 보다. 다수의 구체적인 인터페이스를 분리 구성해서 개발을 해야 된다는 뜻이죠. 사용하지 않은 인터페이스는 구현 하지 말아야 된다. 뭐 당연한 얘기 니까요. 위쪽에서 하나의 포괄적인 것보다는 여러 개 분리해서 다수의 구체적인 인터페이스를 만드는 게 좋다. 이렇게 보시면 되겠습니다. 사용으로 의존성 뒤집기 입니다. 하위 클래스 의 변경 사항이 상위 클래스의 영향을 미치지 않도록 구성을 해야 된다. 라고 써있습니다. 요즘도 까지 오시면 되겠죠. 이렇게 해서 5가지의 객체지향 원칙 이 설리 원식이 뭐 아닌 것은 이라든지 다음이 설명하는 객체지향 설계 원칙 은 이런 식으로 문제를 물어봤을 때 올바른 보기를 보내실 수 있어야 된다. 이렇게

11:01
보시면 되겠습니다. 다음은 객체지향 캐스트 나와 있는데 이거는 어렵지 않죠. 쓰레드 기반 테스트 가 있고요. 사용 기반 테스트 가 있고 검증과 시스템 테스트 러 있는데 각각의 대한 설명이 어렵지 않기 때문에 간단하게 읽어 보시면서 정리를 해주시면 되겠습니다. 다음은 디자인 패턴입니다. 이번 섹션에서 가장 중요한 파티라고 볼 수 있어요. 디자인패턴 의 그냥 은 아마 1 감옥에서 한번 언급한적이 있던걸로 기억 을 하고 있습니다. 반복적인 문제를 해결하기 위한 설계 패턴을 일반화한 거다. 라고 알고 계시면 되고 gof 디자인 패턴 이라고도 하는데 왜 지오의 분지는 제가 따로 적어 놓았죠. 크게 중앙을 아니에요. 모든 종류의 시스템 구조의 적용하는 소프트웨어 아키텍처 와 달리 디자인 패턴은 구현 단계 의 문제에 실제로 적용 가능한 해결 방법 이라고 되어 있어요. 기능 향상이 아니라 문제해결이 핵심이다. 라고 보시면

12:00
되구요. 아 패턴이 5가지의 생성 패턴 7가지 11가지의 구조 행위 패턴 으로 9분이 된다고 되어 있죠. 자 그래서 생성 고 중 행위 패턴 2 어떤 패턴들이 인지대 니 악 설명이 되어있구요. 아래쪽에 각각의 패턴이 영어로 서있습니다. 외우 셔야 되요. 생성 패턴이 아닌 것은 구조 팩터 에 해당하는 것은 이런 식으로 문제가 나옵니다. 그렇기 때문에 반드시 기억을 해 주셔야 되구요. 각각 패턴 의 의미도 문제로 나와요. 그렇기 때문에 배워 주셔야 됩니다. 디자인패턴 의 구성 요소 자허 설명보다는 항목이 집중해서 공부 해 주시면 되구요. 디자인패턴 의 특징 나와있죠. 구조 파악 원활한 의사소통 생산성 뭐 재사용 썸 확장성 이런거 그 다음에 초기 비용이 많이 들고 객체 취 향 개발해서 만 사용할 수가 있다고 배어 있죠. 요런 특징들을 판 하고 계셔야 되요. 문제 나옵니다. 다음으로 각 패턴에 대한 설명을

13:00
기억을 하고 계셔야 되요. 실제로 이 패턴에 대한 예시를 들기 위해서 코딩을 한다고 하면 굉장히 복잡해 집니다. 실제로 그 코드를 분석할 수 있을지도 사실 미지 수조 그렇기 때문에 그런 식으로 실제 코드를 구현하면서 이게 무슨 패턴 일까요. 라는 문제가 나오지는 않습니다. 무조건 글로 설명 해요. 그렇기 때문에 그를 외우시면 됩니다. 아시겠죠. 어떤 코드를 보고 이게 어떤 패턴으로 구현되어 있다. 이런 문제는 절대 안 나오기 때문에 가락 패턴을 영어단어 뇌우 듯이 공부를 하시면 됩니다. 팩토리 메소드 상위 클래스 에서는 객체를 생성하기 위한 인터페이스 를 정해 하구요. 하위 클래스 는 어떤 클래스의 인스턴스 를 생성할 것인지 를 결정한다고 되어있죠. 객체를 생성하여 반환 하는 메소드를 팩토리 메소드 라고 하는데 이 팩토리 메소드를 오버라이딩 해서

14:00
객체를 반환 한다. 고 되어 있어요. 오버라이딩 아직 뭐니 배우진 않았지만 사용자의 입력 값이나 조건이 다른 상태에서 객체를 생성하는 경우에 적용할 수 있는 패턴 이라고 되어 있습니다. 제가 단순하게 지금 읽기만 했는데 이걸 설명하기에는 예를 들어 섬 오버라이딩 이라든지 여러분들이 모를 수 있는 단어가 굉장히 많아서 그냥 단순하게 암기 하시는게 최곱니다. 아시겠죠. 자 이렇게 해서 넘어 가구요. 그 다음에 추상 팩토리 라고 되어 있는 거죠. 엑스트렉 팩토링 이 관련 있는 서브 클래스를 묶어서 팩토리 클래스를 만들고 조건에 따라 객체를 생성하는 패턴이다. 라고 되어 있습니다. 객체 생성 코드 가 상위 클래스의 존재하고 요. 생성된 객체를 하위 클래스가 받아서 사용한다. 라고 되어있죠. 여기에 이제 앱스 tet 팩토리에 특징이에요. 다음으로는 빌더 줘 빌더는 객체 생성의 많은 인수가 필요한 복잡한 객체를 단계적으로 생성하는 패턴 이에요.

15:01
복잡한 객체 생성 과정을 단계별로 분리한다. 유기 인제의 빈터에 특징이다. 이렇게 보시면 되겠습니다. 다음은 프로토타입 동일한 타입의 객체를 생성해야 할 때 필요한 비용을 줄이기 위한 패턴인데 새로운 객체를 생성하는 게 아니라 기존의 객체를 복사한다. 라는게 특징 이겠죠. 그래서 다행히 다음은 싱글톤 클래스가 오직 하나의 인스턴스 마늘 가지도록 하는 패턴 이라고 되어 있습니다. 접근 제안자 정적 변수 이런 것들을 활용해서 다수의 인스턴스로 인한 문제를 방지할 수 있다고 되어 있죠. 여기까지가 생성 패턴 이구요. 객체를 생성할 때 필요한 패턴 이라고 보면 됩니다. 2 여러가지 패턴을 가족 영화라는 게 아니라 이 중에 적절한 패턴을 사용하세요. 란 뜻이에요. 사양으로는 구주 패턴입니다. 아랍 타가 첫번째 내어 서로 다른 인터페이스를 가진 클래스들을 함께 사용할 수 있도록 하는 패턴이 받았습니다.

16:01
다음으로 브리치 볼게요. 브릿지는 복잡하게 설계된 클래스를 기능 부와 구현 부로 분리를 해서 두 클래스를 다리처럼 연결하는 거죠. 그래서 브릿지 라고 이야기합니다. 이렇게 분리하면 결합 또는 낮아진다. 독립적으로 쓸수있다. 뭐 이렇게 보시면 되겠습니다. 3 으로 컴포지트 에 나와 있습니다. 객체들의 관계를 트리 구조로 구성해서 다니는 객체와 복합 객체를 동행하게 다룰 수 있게끔 한다. 라고 되어 있죠. 다시 클래스를 하나의 클래스 로 묶어서 취급할 수 있다. 이렇게 나와 있습니다. 다음으로는 데코레이터 클래스 변경 없이 주어진 상황에 따라 기능을 추가할 수 있는 새 코 할 수 있는 패턴이다. 라고 되어 있습니다. 기존 클래스의 메소드에 새로운 기능을 추가하거나 확장하는 형 팩 클래스 의 변경 이 없이 재밌게 데코레이터 다.

17:00
보시면 되겠구요. 각각 서로 9분해서 확실하게 그 다음에 퍼스 하더라고 되어 있어요. 복잡한 서머 시스템들을 간 편하게 사용할 수 있도록 단순화 된 인터페이스를 제공한다. 라고 되어 있습니다. 다시 하위 클래스들이 올바른 결합도 를 갖도록 한다. 이거는 각각 논리적으로 분리가 되도록 한다는 거죠. 분리가 많이 될수록 복잡해지는 데이 복잡한 걸 허 싸 드가 단순한 인터페이스를 제공 해서 문제가 없게 끔 하겠다. 뭐 이렇게 되는 뜻이죠. 자 다음으로 하나의 웨이츠 입니다. 메모리 사용량을 최소화 하기 위해서 데이터 공유를 극대화 한다. 라고 되어있죠. 가볍게 한다는 거죠. 요렇게 보시면 될 것 같구요. 그 다음에 프록시는 특정 객체 로의 접근을 베리 자를 통해서 진행 한다고 되어 있어요. 원본 객체 생성 0 2 원격 개어 접근제어 이런 것들을 진행할 수 있다. 이렇게 보시면 되겠습니다. 이번에는 행위 패턴 마지막이 줘

18:02
첫번째 인터프리터 언어 에 무 은 우리가 이 품은 폼은 와 일문 할 때문입니다. 언어의 문을 평가하는 방법을 규정하는 패턴 우리 앞에서 본 적이 있어요. 그 다음에 템플릿 메서드 를 상위 클래스 에서는 알고리즘의 뼈대는 정해 하고 구체적인 당연 은 하위 클래스가 정애는 패턴 알고리즘 의 구조를 변경하지 않고 특정 단계를 재정의할 수 있는 상태 여기에 이제 샘플링 메소드가 되는거구요. 자 그 다음에 체인 어 버 리 스 plc 브리핑 이라고 되어있는데 요거는 문제 해결을 위한 일련의 처리 객체가 순서대로 문제를 해결한다고 되어 있어요. 객체 하나에서 모든 문제를 해결하는 게 아니라 문제를 해결하기 위해서 순서대로 측정 특정 특정 객체들이 필요한 형태가 되는 거죠. 각각의 처리 객체는 문제의 특정 부분을 처리할 수 있는 연산 들에 집합이 되구요. 천이 객체의 의해서 1

19:00
부분이 해결된 문제는 다음 처리 객체로 넘겨져 서 계속 처리된 형 팩 이렇게 나와 있습니다. 사람으로 커맨드 네요. 요청을 객체 형태로 캡슐 와 해서 나중에 이용할 수 있도록 요청에 필요한 정보를 저장한다. 라고 되어있어요. 복구 취소 같은게 가능하도록 한다. 이렇게 보면 되겠습니다. 다음은 이터 레이터 에요. 내부 구현을 노출시키지 않고 집약된 객체에 접근 하고 싶은 경우에 적용하는 패턴이다. 다양한 탐색 경로를 사용할 수 있다고 되어 있구요. 다른 집합 액체 구조에 대해서도 동일한 방법으로 접근할 수 있다고 되어 있죠. 중요한 건 이 문장이 에요. 다음은 메디 에이터 에어 객체 간의 통신이 직접 이루어지지 않고 중재자 라는걸 동우 진행되서 결합도 를 감소시키는 패턴이라고 배어 있습니다. 복잡한 상호 작용 관계를 단순화 시킬 수 있다라고 되어 이 줘 요즘도 까지 오시면 되겠네요.

20:01
사람으로는 메멘토 입니다. 롤백 되돌리는 거죠. 월백 을 통해 상대의 객체를 이전 상태로 되돌릴 수 있는 기능을 제공한다. 우리가 흔히 컨트롤 제트 라고 하는 것들이죠. 그런 것들을 이야기하는 거에요. 다음엔 옵저버 객체의 상태에 변화를 관찰 하는 옵저버를 등록해서 변화가 있을 때마다. 등록 업적 4 통제 한다. 라고 되어 있죠. 객체 상태 변화를 관찰해서 변화가 있으면 통제한다. 이렇게 보시면 됩니다. 자 그리고 스테이트 객체의 내부 상태에 따라서 다른 기능을 수행하는 메소드 를 보면 한다. 라고 되어 있죠. 상태에 따라 다른 기능을 수행한다. 이렇게 하시면 될 것 같구요. 다음으로 스트레이트 줍니다. 스웻 이는 에 문제를 해결하는 데 있어서 다양한 알고리즘이 적용될 수 있는 경우에 알고리즘 의 별도로 분리하는 패턴이라고 되어 있어요. 알고리즘 을 분리하는 패턴 이렇게 보시면 되겠습니다.

21:00
분리를 했기 때문에 알고리즘의 4 확장과 변경 이용해 지겠죠. 이렇게 보시면 되고 마지막으로 비지터 입니다. 알고리즘은 자료구조 해서 분리한다. 알고리즘과 전에 구조 를 분리한다. 클래스는 수정하지 않고도 새로운 알고리즘을 추구할 수 있도록 한다. 라고 되어 있음 불 이젠 알고리즘은 자료구조를 방문해서 문제를 해결하는 형태로 구성이 된다. 라고 되어 있습니다. 여기까지가 디자인 배터리 되겠습니다. 암기 굉장히 잘 해주셔야 되요.

728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/aksK-GMJncE?si=_57-VrWVRaBVI2F5

1. 배열과 반복문 이해

1-1. 배열 선언과 초기화
- 배열은 식별자 식별자로 동일한 타입의 데이터를 저장함
- 같은 크기의 공간이 연속적으로 생성되며, 공간 안의 값은 서로 다를 수 있음
- 배열 선언 시, 배열의 위치를 저장하는 상수명을 사용함
- 배열의 초기화는 선언과 동시에 이루어지거나, 선언 이후의 일부 초기화만 이루어질 수 있음
- (중요) 배열의 초기화되지 않은 경우, 각 데이터를 따로 초기화해야 함

1-2. 배열의 사용과 주소 상수
- 배열의 사용은 주소 상수를 통해 데이터에 접근하는 것을 의미함
- 첨자는 인덱스로, 같은 간격으로 순서로 나열된 배열에 접근하기 위한 상대적인 위치값임
- 첨자의 시작 위치는 0이며, 첨자의 몸체를 의미하는 배열명과 첨자 수를 함께 사용함
- 5칸짜리 배열을 생성하고 초기화했을 때, 첨자 수를 0부터 시작한다는 점을 기억해야 함
- 배열 전체를 순회한다는 것은 첨자 수를 전체 범위로 사용한다는 뜻임

1-3. 2차원 배열과 인덱스
- 2차원 배열은 배열 안에 또 다른 배열이 있는 구조임
- 2칸짜리 배열의 첨자는 000102가 0, 101112가 1로 나타남
- 2차원 배열의 크기를 알고 첨자를 순회할 때, 인덱스를 사용함
- 0부터 4까지 반복되는 반복문 안에 다른 데이터를 접근하기 위해 첨자 수를 사용함
- 2차원 배열은 물리적으로는 연속된 공간이 나열되며, 초기화 시에도 각각의 데이터가 순서대로 입력됨

2. 프로그래밍 언어의 기본 구조체 이해

2-1. 복잡한 프로그래밍 언어의 구조체 이해
- 프로그래밍 언어에서 배열의 초기화 과정과 중괄호의 사용에 대해 설명함
- (중요) 배열의 초기화가 어떻게 이루어지는지와 중괄호의 역할에 대해 알아봄
- 복잡한 배열 구조를 분석할 때는 첨자로 복잡한 구조체를 표 형태로 구현한 후 접근하는 것이 효과적임을 강조함
- 구조체는 복사된 데이터가 아니라 참조할 데이터를 가공할 수 있어야 함

2-2. 구조체의 선언과 초기화
- 구조체의 선언과 초기화 과정에 대해 자세히 설명함
- (중요) 구조체의 내부 변수를 초기화하지 않는 것이 핵심임을 강조함
- 배열이 아닌 다른 형식의 데이터를 그룹으로 관리하는 구조체에 대해 알아봄
- 구조체의 선언이 별도로 이루어져야 함을 강조함

2-3. 포인터의 개념과 선언
- 포인터는 복사된 데이터가 아니라 참조할 데이터에 접근하는 기능임을 설명함
- 포인터를 활용하는 연산자는 'p'와 's'로, 주소값을 이용해 데이터에 접근함
- 포인터 변수의 크기는 고정되어 있으며, 해당 주소로 접근함
- (중요) 포인터 변수의 공간과 타입이 이미 정해져 있음을 강조함
- 포인터는 참조에 의한 전달(콜바이 레퍼런스)이 가능함을 설명함

3. 포인터와 2차원 배열의 이해

3-1. 포인터와 그 특징
- 포인터는 변수의 주소값을 가리키며, 이를 다른 위치로 이동할 수 있음
- 변수의 값을 복사하여 다른 위치로 이동시, 원본 값은 유지됨
- (중요) 복사한 포인터 값은 원본의 속성과 동일하게 변경이 가능함
- (중요) 이 특성은 원본과 복사값의 관계를 보여줌
- 메인 함수에서 변수 생성과 포인터의 주소값과 위치값 전달을 통해 사용됨

3-2. 포인터와 배열의 연산
- 포인터 연산은 데이터의 주소값을 더하거나 빼는 경우, 해당 데이터의 타입 크기만큼 곱해져서 증감이 발생함
- 인티형 데이터의 주소 값에 1을 더하면, 실제 변경은 인티형의 타입 크기만큼 일어남
- 배열 주소를 포인터 변수에 할당할 경우, 포인터 역시 배열처럼 쓸 수 있음
- (중요) 이 특성은 주소 개념을 더 확장한 형태임

3-3. 2차원 배열과 포인터의 연산
- 2차원 배열의 포인터 연산은 데이터 타입과 배열의 길이 모두 포함됨
- 포인터 선언 시에는 괄호와 배열의 크기를 포함해야 함
- (중요) 포인터 p 생성 시에는 배열의 크기가 별도로 지정되어야 접근 가능
- 2차원 배열의 크기는 별도로 지정되어야 포인터를 통해 접근 가능

00:01
세 번째 장은 자료 구조와 포인터를 같이 공부를 해볼 건데요. 사실 요게 섹션 하나로 정리할 수 있는 내용이 아니에요. 굉장히 많고 어려운 내용인데 다행히도 문제가 그렇게까지 복잡하게 나오진 않기 때문에 핵심만 같이 짚고 넘어가는 형태로 한번 보겠습니다. 이론을 적어두긴 했지만, 이 이론이 반영된 코드를 보고 코드가 해석될 수 있어야 되는 게 핵심입니다. 첫 번째로, 배열과 구조체를 먼저 보도록 할게요 배열을 앞에서 잠깐 언급을 하긴 했죠. 배열은 하나의 식별자 식별자라는 건 여기선 이름을 이야기합니다. 하나의 이름으로 동일한 형식의 여러 데이터를 다룰 수 있다라고 되어있구요. 같은 크기와 같은 타입의 공간이 연속적으로 생성되는 특성이 있습니다. 저장되는 값의 크기는 다를 수 있지만 데이터 타입은 같아야 한다라고 되어있구요.

01:01
공간의 크기가 아니에요. 같은 크기의 공간이 생성되고요. 거기 안에 들어가는 값의 크기가 다를 수 있다는 뜻이에요. 데이터 타입은 같아야 한다고 되어 있고요. 이렇게 같은 크기의 공간이 생성이 되는데 여기 안에 있는 값이 서로 다를 수 있다는 거죠. 이런 식으로 그리고 여기 안에 있는 데이터 타입이 정수면은 정수 실수면 실수 문자면 문자 이런 식으로 같아야 한다라고 써 있는 겁니다. 다음으로, 배열의 선언 앞에서 봤던 거랑 똑같습니다. 배열의 선언도 마찬가지 식별자 이름을 따로 지정을 하고 그다음에 대괄호 안에 크기를 지정하는 형태로 작성을 합니다. 그러니까 정수 5개 문자 10개 실수 3개를 저장할 수 있는 배열이라는 뜻이에요.

02:00
그리고 배열의 초기화 이 부분도 중요합니다. 배열의 초기화는 선언과 동시에 초기화하는 경우에는 중괄호를 이용해서 전체의 초기화가 가능해요. 배열의 일부만 초기화하는 경우에는 나머지를 자동으로 0으로 초기화를 하고 선언 이후에 초기화하는 경우에는 각 데이터를 하나하나 초기화를 해야 돼요. 선언한 다음 줄부터는 그렇게 해야 된다는 거죠. 그래서 선언과 동시에 초기화하는 방법에 대해서 아래쪽에 적어 놓은 겁니다. 배열이 3개가 있고요. 각각 4개의 데이터를 저장할 수 있게끔 만들어 놨습니다. 그러면 중괄호를 이용해서 4개를 동시에 초기화 할 수 있어요. 그래서 2 4 5 3으로 각각 초기화를 했다는 거고, 여기 아래쪽에 있는 배열에서는 각각 0으로 초기화를 했다는 겁니다.

02:52
그런데 여기서 보면 총 네 칸인데 첫 번째 부분만 0으로 초기화를 했죠. 그럼 나머지는 알아서 0으로 초기화가 된다는 거예요. 그래서 이렇게 쓰나 결과는 같다 이렇게 파악을 해주시면, 되겠습니다. 자 그런데 만약에 마지막 줄 이야기인데요. 만약에 배열을 하나 생성을 했는데 뭐 예를 들어서 이렇게 생성을 했다고 가정을 해보죠. 초기화를 하지 않았어요. 초기화를 하지 않았을 경우에는 그다음 줄에 이런 식으로 초기화를 하지 못한다는 뜻입니다. 이렇게 안 됩니다. 그래서 이때는 하나하나 초기화를 해줘야 된다라는 얘긴데 하나하나 초기화를 하는 건 어떻게 하는 건지 아래쪽에 배열의 사용 보면서 같이 보겠습니다. 배열의 사용 같이 좀 보죠.

03:50
일단 주소 상수에 대해서 먼저 같이 좀 볼게요 배열 이름은 변수처럼 데이터를 할당할 수 없는 상수형 데이터다 라고 되어 있습니다. 배열명은 배열의 위치를 저장하고 있는 상수라고 되어있죠. 그러니까 방금 봤던 ar 1 2 3 이런 것들은 ar1은 10 이렇게 안 된다는 거죠. 왜냐하면, 얘가 변수가 아니기 때문에 상수는 상수 이런 식으로 쓸 수가 없어요. 자 그래서 printf라든지 그런 것들을 이용해서 변수를 출력할 때는 말 그대로 데이터가 출력되지만 배열 이름을 출력할 때는 이놈이 출력됩니다. 이렇게 기억을 하고 계시면 되고요. 배열은 이 주소값 배열명을 기준으로 해서 첨자라는 걸 통해 데이터에 접근한다고 되어 있어요. 첨자가 인덱스라는 건데요. 여기 나와있죠.

04:49
그럼 인덱스가 또 뭔지를 알고 있어야겠죠. 인덱스는 동일한 간격으로 순서로 나열되어 있는 배열에 접근하기 위한 상대적인 위치값이에요. 그래서 배열명 첨자의 형태로 사용하며 배열이 첫 번째 시작 위치 값을 가지고 있으므로 중요합니다. 첨자의 시작은 0이다라고 되어있습니다. 자 요거를 정리를 왼쪽에다 해볼까요? 자 제가 배열을 5칸짜리를 만들었어요. 같은 간격이라고 생각을 해주세요. 이렇게 되어 있어요. 요거 배열 이름이 예를 들어서 ar이라고 생각을 해볼게요 그리고 이 각각의 데이터는 원래 번지수가 있습니다. 어찌 됐건 이 ar은 이 첫 번째 위치를 가리키고 있는 애예요.

05:39
그럼 이 상태에서 이놈은 같은 위치죠 얘가 가리키고 있는 위치랑 같은 위치이기 때문에 ar하고 대괄호 0 이렇게 써준다는 거죠. 같은 위치이기때문에 첨자만큼 건너뛰어야 되기 때문이에요. 그렇기 때문에 0이 첫 번째 값이다. 이렇게 생각을 하시면 됩니다. 그럼 얘는 여기서 한 칸 이렇게 건너뛰어야 되는 애죠 그렇기 때문에 여기서는 ar 1이라고 이야기를 하는 거죠. 그렇게 되면 얘는 ar2고요. 얘는 3이고 얘는 4가 되겠죠. 이렇게 5칸을 만들 때 실제로 선언을 할 때는 ar 5라고 선언을 했겠지만, 실제로 접근을 할 때는 0부터 4까지를 이용해서 접근을 한다. 이렇게 생각을 하시면 돼요.

06:31
그렇기 때문에 여기서 보시면 5개짜리 배열을 생성하고 초기화를 했지만, 0부터 접근을 하기 때문에 마이너스 1이나 이 값보다 큰 0부터 시작하니까요? 4가 맥스였죠 5로 접근을 하게 되면 오류가 난다는 거죠. 가장 기본적인 부분입니다. 0부터 시작한다. 배열은 자 이것까지 보고 넘어갈게요 이번에는 반복문과 첨자입니다. 이 첨자 위치의 변수를 사용할 수 있기 때문에 반복용 변수를 이용해서 같은 코드인데 서로 다른 데이터를 접근하도록 할 수가 있습니다. 아래쪽에 보시면 반복문이 사용되고 있죠. 그리고 이 i값이 0부터 5 전까지 반복되게끔 하고 있어요.

07:25
이런 식으로 0부터 이 배열의 크기 그리고 여기는 이하가 아니라 미만으로 이렇게 구성을 하게 되면 배열의 첨자를 전체를 돌릴 수가 있어요. 0부터 4까지니까요? 5 전까지면 4까지죠 그래서 0부터 4까지 반복을 하게 될 수 있고 이거는 배열 첨자 전체범위입니다. 이 상태에서 첨자 부분에 i를 쓰게 되면 배열 전체를 순회할 수 있다는 뜻이 됩니다. 이해되시죠. 여기도 마찬가지예요. 그래서 배열이 예를 들어서 n칸이라고 했을 때 포문은 0 시작해서 여기에 n을 쓰게 되는 이런 형태로 구성이 됩니다. 이렇게 되면 배열의 전체를 순회한다. 이렇게 해석을 하시면 되겠죠. 자 이거 중요한 부분이에요. 넘어가서 2차원 배열 2차원 배열은 배열 안에 또 배열이 있는 겁니다.

08:19
그래서 이런 식으로 대괄호가 두 번 들어가요 이름이 두 번 들어가는 건 아니고 대괄호가 두 번 들어가는데 1차원 배열의 크기와 2차원 배열의 크기 이렇게 접근을 하게 되는 거죠. 예를 들어서 이거를 보는 겁니다. 여기 arr 그다음에 23 이렇게 써 있죠. 그러면 2칸이고 3칸이잖아요. 그러니까 3칸짜리 배열이 2개 있다. 이렇게 해석을 하시면 돼요. 그래서 이렇게 000102가 0으로 묶이는 거고요. 101112가 1로 묶이는 겁니다. 생각 잘하셔야 돼요. 두 칸 세 칸이니까. 시작은 0 0으로 시작하는 거니까요? 얘는 0 1 얘는 0 1 2 이렇게가 여기에 포함되어 있는 첨자입니다. 생각을 잘 해주세요.

09:13
그리고 지금 이렇게 제가 따로 아래쪽도 마찬가지 표 형태로 나타냈지만 물리적으로는 그냥 연속된 공간이 나열됩니다. 얘네들이 그냥 여기에 붙어 있어요. 이거 생각도 잘 해주셔야 되고 그 다음에 코드를 계속 보면 될 것 같아요. 여기 지금 보면은 2 3 이렇게 해서 2행 3열로 표현을 했지만, 실제로는 붙어있습니다. 그렇기 때문에 초기화를 할 때도 연속적으로 쭉 이렇게 입력을 해주시면, 돼요. 그러면 알아서 1 2 3 4 5 6 순서대로 들어갑니다. 그런데 중괄호를 이중으로 입력을 하게 되면은 안쪽에 있는 각 중괄호의 값이 각각의 1차원 배열의 초기값이 되는 거예요.

10:00
그래서 1 2라고 써있으면은 1 2하고 나머지를 0으로 만들어주고 그다음에 4 5는 그다음 배열의 4 5 그리고 나머지를 0으로 만들어주는 형태가 되는 거죠. 만약에 여기서 중괄호가 없이 안쪽에 있는 중괄호가 없이 1 2 4 5라고만 써 있었으면 1 2 4 5 나머지가 0으로 바뀌겠죠. 자 이렇게 초기화가 어떻게 되는지를 알아야 출력을 할 수가 있어요. 이렇게 출력을 예상할 수가 있다. 이 부분입니다. 실제로 배열이 포함된 코드를 분석할 때 요런 식으로 첨자가 복잡하게 되어 있을 수 있기 때문에 이거는 머리로 따라가지 마시고 오른쪽처럼 표 형태로 구현을 한 다음에 접근을 하시는 게 실수를 줄이는 방법이에요. 이 정도만 보고 넘어가도록 하죠.

10:59
계속 말씀드리지만 코드가 굉장히 좀 부족하죠. 이거는 우리가 인제 코드 기초를 공부하는 책이 아니기 때문에 중요한 핵심만 짚고 넘어가는 부분이라 문제를 다양하게 풀어보시는 게 좋습니다. 다음으로는 구조체입니다. 사용자 정의 자료형이라고도 하는데요. 기본 자료형 우리 int라든지 char 이런 것들 있죠. 그런 자료형을 이용해서 새로운 자료형을 만드는 걸 구조체라고 이야기를 해요. 하나의 식별자로 배열하고 달라요. 서로 다른 형식의 데이터를 그룹으로 관리할 수 있다 라고 써 있고요. 기존에 없던 자료형이기 때문에 선언하기 전에 정의가 우선되어야 한다. 지금까지 인트라든지 더블이라든지. 이런 자료형에 대한 정의를 한 적은 없어요. 선언만 했었는데 여기선 정의가 별도로 이루어져야 된다 라고 써 있는 거죠. 그리고 여기에 안 써있지만 첨자로 관리하지 않습니다.

11:57
구조체는 내부 변수 이름으로 관리를 해요. 이것도 같이 좀 볼게요 일단 메인 함수 블록의 바깥에서 함수처럼 블록 구조로 정의를 한다고 되어 있습니다. 구조체 정의 단계에서는 내부 변수를 초기화하지 않는다. 이것도 핵심이죠. 코드를 보면 됩니다. 일단 이 부분입니다. 스트럭트라고 되어 있죠. 이게 구조체를 정의하는 구간이에요. 스튜던트라는 구조체를 정의를 하고 있고요. 이 구조체 안에는 정수 타입의 변수 2개와 문자 타입의 변수 하나가 있습니다. 그리고 초기화가 진행되지 않고 있죠. 이게 핵심입니다. 앞으로 이 타입의 학생 타입의 데이터를 생성을 하게 되면 그 데이터 안에는 이거 이거 총 세 가지 변수가 포함되어 있을 겁니다 라고 이야기를 해주는 거예요. 이렇게 정의를 하고요. 이게 정의입니다.

12:56
사용자가 별도로 정의를 한 거예요. 자 정의고 이걸 사용할 때 마찬가지 선언을 해야 돼요. int a처럼 근데 조금 길어요. 요렇게 써줘야 됩니다. 그냥 스티던트 이렇게 쓰면 안 되고요. 스트럭트까지 포함을 해서 적어줍니다. 그리고 원하는 식별자를 적어주는 거죠. 그리고 초기화를 할 때는 데이터가 여러 가지이기 때문에 중괄호로 필요한 요소를 하나하나 넣어주면 돼요. 그러면 3012가 여기로 들어가는 거고요. 94가 1로 들어가는 거고, a가 그레이드로 들어가는 형태가 되겠죠. 이런 식으로 jen이라는 변수도 만들어서 초기화를 해주고 있습니다. 그 상태에서 각각 내부에 있는 변수에 어떻게 접근을 하나 봤더니, 이름으로 접근을 하고 있죠. 변수명으로 접근을 하는 겁니다.

13:51
그래서 제인 점 제인의 안에 있는 스코어 값을 이야기하는 거예요. 이 86이 들어있는 공간이죠. 이 공간에 82라는 값을 다시 집어넣고 있어요. 배열보다는 훨씬 직관적이죠. 출력할 때도 마찬가지입니다. 힘이라는 제인이라는 변수 안에 스코어라는 그레이드라는 값을 가지고 온다 이렇게 생각을 하시면 됩니다. 훨씬 직관적이기 때문에 이해가 어렵진 않으실 거예요. 중요한 건 초기화를 하거나 아니면 정의를 할 때 실수를 하지 않도록 조심을 해야 되는 거겠죠. 이렇게까지 보시면 되겠습니다. 자 이제 포인터를 봐야 되는데요. 포인터가 굉장히 어려운 개념이거든요. 그래서 이 포인터를 전혀 모르는 상태라고 하시면은 아마 전혀 도움이 안 되실 거예요. 최대한 시험에 도움이 되는 핵심만 한번 짚어보도록 하겠습니다.

14:45
포인터는 우리가 지금까지 어디에 접근할 때 이름으로 접근을 했었잖아요. 그게 아니라 주소값을 통해서 특정 데이터에 접근할 수 있는 기능입니다. 복사된 데이터가 아니라 원본 데이터를 가공할 수 있다고 되어있죠. 이게 무슨 소리냐면 앞에서 배웠던 값에 의한 호출이 있죠. 그 얘기를 하는 겁니다. 이거는 참조에 의한 호출이라고 이따가 배울 거예요. 포인트 활용을 위한 연산자는 m% 줄여서 엠드라고 하죠. m% 연산자와 에스터 리스크 이 두 가지가 있다. 라는 거고요. 이건 우리가 앞에서 스킨 에프 공부할 때 봤던 거예요. 식별자 앞에 붙여서 해당 식별자의 주소값을 도출할 수 있다. 해당 식별자가 가지고 있는 공간 공간의 주소값을 도출할 수 있다. 이렇게 해석하시면 되겠구요. 별 같은 경우에는 주소 데이터 앞에 붙여서 해당 주소로 접근한다.

15:41
라는 명령을 내릴 수 있는 연산자라고 보시면 됩니다. 포인터는 별을 이용해서 선언할 수 있고요. 이 말도 중요합니다. 포인터 변수의 크기는 고정이 되어있어요. 따라서 포인터변수의 자료형 이 부분이죠. 자료형은 참조할 데이터의 자료형을 의미한다 라고 써 있습니다. 포인터변수안에는 주소값만 저장을 하기 때문에 주소값을 저장할 수 있는 공간의 타입과 크기가 이미 정해져 있어요. 그런데도 이 앞에 자료형을 입력하는 이유는 이 포인터 자체가 참조하고 싶은 데이터의 자료형이다. 이렇게 써있죠. 이거 중요한 개념입니다. 자 이거 보면 되겠죠. 특정 변수의 위치값을 저장한 포인터 변수는 해당 변수를 가리킨다라고 표현한다고 되어 있어요. 한번 보죠.

16:38
코드를 보면 정수형 변수를 선언하고 있고요. 그다음에 아래쪽에 별피 써있잖아요. 이게 포인터 변수라는 겁니다. 포인터 변수를 선언하고 있는데, 포인터 변수 크기와 공간은 일정하지만 얘가 가리키게 될 참조하게 될 변수의 타입이 인트입니다. 라고 써 있는 거예요. 이해가 되시죠. 자 그러면 여기에는 이 피라는 공간에는 주소값이 들어가야 돼요. 그래서 어떤 주소값이 들어가고 있냐면 데이터 변수에 주소값을 집어넣고 있는 거예요. 해석되시죠. 이게 없었으면은 데이터 값을 이야기하는 거구요. 이게 있으니까 데이터 변수의 주소값을 위치값을 저장하고 있다 라고 보시면 됩니다. 이 상태에서 별 p는 20이라고 되어 있어요.

17:37
이게 무슨 뜻이냐 일단은 이 20을 가지고 이 p로 갑니다. 그리고 집어넣으려고 봤더니, 별이 붙어있는 거잖아요. 그러면 이 안에 적혀 있는 곳으로 가시오라는 뜻이에요. 그래서 실제로 여기가 적혀 있는 데가 어디냐면은 데이터라고 하는 위치죠 이렇게 저장되어 있는 곳의 위치를 얘가 가리키고 있는 거잖아요. 그래서 저 20이라는 애가 p로 갔다가 별이 붙어있으니까 여기 적혀있는 위치로 다시 한번 가는 거예요. 그래놓고 여기 있는 값이 바뀌는 거죠. 자 이런 식으로 접근을 하는 게 포인터다 라고 생각을 하시면 됩니다. 자 이 개념이 참조에 의한 전달이라고 콜바이 레퍼런스라고 이야기를 합니다. 복사된 데이터를 전달하는 게 아니라 참조값을 전달함으로써 데이터 원본을 건드릴 수가 있는 형태예요.

18:34
우리가 함수를 쓸 때 인수랑 매개변수로 넘어가는 값이 복사가 된다고 말씀을 드렸었잖아요. 저번에 이거 같은 경우에는 복사가 되는 게 아니라 원본 데이터를 건드릴 수 있게끔 합니다. 한번 볼게요 코드가 조금 긴데 실제로 여러분들이 풀어야 되는 코드는 이것보다 조금 더 길 수도 있어요. 그렇기 때문에 실제로 순서가 어떻게 진행되는지도 알 수 있어야겠죠. 일단은 작업 순서는 여기서부터죠 메인이 항상 시작이니까요? 일단 변수 제가 한번 그려놓을게요 메인이라는 함수가 있고요. 이 메인이라는 함수 운용하는 중에 변수가 생성이 되는 거죠. 그래서 n이라는 친구랑 k라는 친구가 이렇게 생성이 되어 있는 상태고요. 그리고 여기 안에 각각 10과 20이 저장되어있는 상태입니다.

19:33
그 상태에서 fa라는 함수를 호출해서 n과 k의 주소값 참조값 위치값 이런 표현을 씁니다. 이런 값들을 전달하고 있어요. 그러면 fa라는 함수에서는 매개변수가 나와 있습니다. 그래서 x라는 친구와 포인터 변수 y라는 친구가 존재를 해요. 그리고 넘어갔죠 이 n 값이 10이잖아요. 그러면 10이 이렇게 들어갑니다. 이건 어떻게 들어가는 거예요. 복사가 돼서 들어갑니다. 그렇기 때문에 이 위쪽에 있는 10과 아래쪽에 있는 10은 서로 별개예요. 다음에 k 같은 경우에는 이 10이 들어가는 게 아니라 k의 주소값이 들어가고 있죠.

20:28
그렇기 때문에 넘어가는데 k의 주소값이라고 하면 이렇게 적어주면 되겠죠. 이거는 원본 위치가 들어가는 겁니다. 위치 이렇게 지금 이런 상태예요. 그 상태에서 보는 거죠. x에다가 5를 증가시키고 있죠. 그러면 이 10이라는 값이 15가 됩니다. 단순하죠. 그런데 별 y는 달라요. 자 y에 적혀있는 위치로 찾아가세요. 라는 뜻이거든요. 그렇기 때문에 이 k의 주소값으로 찾아갑니다. 그리고 나서 여기에 있는 값을 5 증가시켜요 이상태가됩니다.

21:22
그러면 실제로 n과 k값을 출력해보면 10은 그대로 출력이 되겠지만, 여기 있는 값이 증가됐으니까요? k 같은 경우에는 원본이 증가됐기 때문에 25가 출력이 된다는 거죠. 이런 식으로 원본을 다른 함수에서 다른 함수의 원본을 건드릴 수가 있다. 이게 포인터의 특징이라고 보시면 됩니다. 넘어가서 이번에는 배열하고 포인터를 또 합해보는 거예요. 많이 어려운 내용이죠. 포인터 연산이라고 하는 건데 포인터 연산은 데이터의 주소값을 더하거나 빼는 연산을 할 때 해당 데이터의 타입 크기만큼 곱해져서 증감이 된다라고 되어 있어요. 예를 들면 인티형 데이터 주소 값이 예를 들어서 뭐라고 할까요?

22:14
100이었다고 가정을 해볼게요 이게 주소값이라고 가정을 했을 때 이 주소값에 1을 더한다고 하면 이게 102가 되는 게 아니라는 거예요. 내부적으로 어떻게 되냐면 인트의 타입 크기가 4거든요. 그래서 곱하기 4가 이렇게 이루어진다는 거죠. 실제로는 2 곱하기 4에서 108이 됩니다. 만약에 1이었으면 1 곱하기 4에서 104가 되겠죠. 이런 식으로 첫 번째 위치 값은 100부터 해서 4칸을 차지해요. 타임 크기가 4이기 때문에 두 번째는 4부터 시작해서 4칸을 차지한다. 이렇게 보는거죠. 이런 식으로 접근을 할 수가 있다는 거고요. 배열 주소를 포인터 변수에 할당하게 되면 포인터 역시 배열처럼 쓸 수 있다 라고 되어 있어요. 이것도 코드를 보고 확인을 할 수 있어야겠죠. 머리가 좀 복잡해집니다. 여러분도 그려가면서 하셔야 돼요.

23:12
그렇지 않으면 이해가 안 됩니다. 5칸 만들어지고 있죠. 1 2 3 4 5로 초기화를 했구요. 그렇게 많지 않기 때문에 하나씩 본다라고 하면 얘가 0번째죠 얘가 첫 번째 두 번째 세 번째 네 번째 배열이에요. 자 그리고 포인터 변수 p를 생성을 했구요. 그리고 ar 입력되어 있습니다. 자 그런데 여기서 ar이라고만 썼어요. 우리가 and ar이라고 쓰지 않고 그냥 ar이라고만 썼습니다. 왜 그럴까요? 이것도 생각을 잘해주셔야 돼요. 배열 이름은 앞에 이걸 붙일 필요가 없는 이유가 주소 뭐였죠 상수기 때문이에요. 이미 주소값이기 때문에 앞에다가 and를 붙일 필요가 없다는 거죠. 그래서 그냥 주소가 들어가는 거예요. 이거랑 같은 의미입니다.

24:10
이해되시죠. 이 상태입니다. 그러면 결국에 이 p가 가리키고 있는 건 요놈이라는 뜻이에요. 배열의 첫 번째 주소값 자 그래서 이 p가 가리키고 있는 위치에서 2번 건너 뛴 값 한 번 두 번 이 3이 출력되는 거고요. 똑같은 얘기입니다. p+2라고 되어 있죠. p 안에는 현재 뭐가 들어있죠. 배열의 첫 번째 위치가 들어있어요. 주소가 들어있어요. 거기에 1을 더하게 되면 어떻게 된다. 이 주소값을 이 데이터 크기만큼 건너뛰는 거기 때문에 두 번 건너뛰어서 얘를 가리키는 거랑 똑같은 거예요. 결과적으로 이 표현과 이 표현이 같은 표현이다라는 거죠. 헷갈릴 수 있기 때문에 괄호라든지 별 위치를 잘 파악하세요. p와 ar은 현재 같은 위치를 가지고 있어요. 그렇기 때문에 이 p 위치에 ar을 써도 똑같은 연산이 가능합니다.

25:10
아시겠죠. 주소값만 같으면 p든 ar이든 어쨌건 같은 위치를 참조할 수 있다는 거예요. 이 정도까지 주소 개념을 같이 좀 봤고요. 마지막으로, 2차원 배열과 포인터에 대해서 좀 볼 텐데 아 요거 많이 어렵습니다. 실제로 이 부분이 이해가 안 되시면 건너뛰는 것도 방법이에요. 코드에 기초가 없으신데, 너무 이쪽에 집중을 하시는 것보다 다른 부분을 공부해서 점수를 올리는 게 더 좋은 방법이 될 수도 있습니다. 이 유형의 문제가 나온다고 해도 한 문제 정도기 때문에 너무 집중을 하실 필요는 없어요. 물론 실기할 때는 조금 더 공부를 하실 필요가 있지만 어쨌든 그렇습니다. 좀 보도록 하죠. 여기서는 문법적인 부분이 중요해요. 포인터 2차원 배열의 포인터 연산은 데이터 타입과 함께 배열의 길이도 포함되어야 한다고 되어있습니다.

26:00
2차원별 접근을 위한 포인터 선언 방법은 변수명도 변수명이지만 괄호 들어가죠 그리고 오른쪽에 2차원 배열의 크기가 들어가야 돼요. 이걸 얘기하는 거죠. 이게 2차원 배열의 크기죠 자 그래서 포인터 p 생성할 때 어떻게 되어 있죠. 괄호하고요. 별 p하고 배열 선언하는 것처럼 크기가 별도로 지정되어 있어야 됩니다. 이렇게 해야 접근이 가능해요. 일단은 p1 이건 arr1과 똑같은 의미예요. 그 상태에서 2차원 배열이 있는 두 번째 값을 가지고 오는 겁니다. p1은 이렇게도 표현할 수 있다고 했죠. 그 다음에 0 이렇게 써있어요.

26:55
이건 결국에 p1 0 이렇게 써있는 것과 같은 위치죠 다시 말씀드리지만 굉장히 간략하게 표현을 하고 있습니다. 요약을 하고 있는 거기 때문에 기초가 없으신 분들은 이해가 안 되실 수 있어요. 별도의 기초 공부가 필요합니다. 일단 이 정도까지 실제로 시험에 반영될 수 있는 이론들을 같이 한번 둘러봤습니다. 다음 시간에는 java를 같이 한번 보도록 할게요

728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/vpQHLIuN-C0?si=gK1JdnZwFYuQj2D3

1. 프로그래밍 언어로의 이해와 활용

1-1. 프로그래밍 언어의 이해
- 프로그래밍 언어는 프로그래머에게 필요한 기본 소프트웨어 도구임
- 프로그래밍 언어의 주요 구성 요소는 명령어, 조건문, 반복문 등이 있음
- 각 언어의 특성에 따라 다른 방식으로 동작하며, 이는 프로그래밍 언어의 다양성에 기인함
- (중요) 프로그래밍 언어를 이해하고 활용하는 것은 프로그래밍 전반에 걸쳐 중요함

1-2. 조건문과 반복문의 활용
- 조건문은 프로그래머가 예상한 조건에 따라 다른 행동을 하도록 함
- (중요) 반복문은 동일한 코드를 여러 번 실행하기 위해 사용됨
- 조건문은 참인지 거짓인지에 따라 다른 행동을 할 수 있도록 제어하고, 반복문은 동일한 코드를 반복적으로 실행함
- 각각의 조건에 따라 다른 행동을 하도록 하여, 프로그래머가 원하는 대로 프로그램을 동작시킬 수 있음

1-3. 선택 문과 프로그래밍 언어
- 선택 문은 조건에 따라 명령문을 선택적으로 실행함
- 프로그래밍 언어에서의 명령어는 기본적으로 '있다', '없다'라는 참/거짓 값을 가짐
- (중요) 선택 문은 이러한 명령어의 특성에 따라 다양한 결과를 도출할 수 있음
- 프로그래밍 언어를 통해 선택 문과 같은 논리적인 명령을 제어할 수 있음

2. 프로그래밍 언어의 반복문 이해와 디버깅

2-1. 반복문의 종류와 특성
- 반복문은 명령어가 반복되는 프로그래밍 언어임
- (중요) 반복문은 기본적으로 포문, 조건 반복문, 지속 반복문, 개별 반복문 등 여러 종류가 있음
- 반복문은 조건에 따라 명령어의 수행을 제어하는 데 사용됨
- 포문은 반복하는 명령어의 시작과 종료가 명확한 구조를 가짐
- 조건 반복문은 원하는 조건이 만족될 때까지 반복이 계속됨

2-2. 포문의 구조와 특성
- 포문은 반복 구간을 포문 안에 두어 반복을 위한 변수를 사용함
- (중요) 포문은 반복구간의 시작값, 증가분기, 감소분기, 결과값 등을 포함함
- 포문의 명령어는 총 두 가지 형태로, 각각 '증가'와 '감소'임
- 명령어의 실행 빈도는 반복문의 반복 횟수와 동일함
- 포문은 명령어의 반복 횟수에 따라 결과값이 달라짐

2-3. 디버깅 툴 작성과 이해
- 디버깅 툴 작성은 프로그래밍 언어의 반복문 이해를 돕는 도구임
- (중요) 디버깅 툴 작성은 코드의 흐름과 결과 값을 추적하여 문제를 찾는데 도움을 줌
- 디버깅 툴은 명령어의 실행 여부와 그 결과를 파악할 수 있음
- 디버깅 툴에는 코드의 실행 빈도, 명령어의 변환, 분기점 등 다양한 정보가 포함됨
- 디버깅 툴을 사용하면 코드의 성능과 효율성을 향상시킬 수 있음

3. 반복문과 조건문

3-1. 반복문 구조와 디버깅 표
- 반복문에서 변수를 어떻게 정의하고 조정하는지 설명함
- 반복문을 명확하게 정의하기 위해 디버깅 표를 사용함
- 반복 패턴을 파악하는 데 유용하게 디버깅 표를 활용함
- (중요) 디버깅 표를 작성할 때, 시작 값과 종료 값을 정확히 기록하는 것이 중요함
- 반복할 조건에 따라 결과를 예상하고 대응하는 방식을 설명함

3-2. 조건문의 특징과 활용
- 조건문은 반복문과 달리 특정 조건을 만족하는 동안 지속적으로 반복하는 구조임
- 조건을 먼저 판단한 후, 조건에 따라 코드를 반복하는 구조를 소개함
- 조건을 무조건 참으로 하기보다, 조건에 따라 달리 수행하는 것이 중요함
- 조건문을 활용하면, 복잡한 조건도 간단하게 파악하고 반복할 수 있음
- 조건문의 결과가 항상 참인 경우에 반복 구조를 무한 반복한다고 함

3-3. 조건 제한 반복문
- 조건 제한 반복문은 조건을 만족하는 동안 지속적으로 반복하는 구조임
- 조건을 먼저 판단한 후, 조건에 따라 코드를 반복하는 구조를 소개함
- 조건에 따라 반복되지 않을 수도 있으므로, 루프와 브레이크를 활용해야 함
- 무한 반복을 위해, 논리 값을 참으로 표현하는 방법에 대해 설명함
- 프로그래밍 언어마다 참 값을 표현하는 방법이 다름을 언급함

4. 프로그래밍 언어의 구현과 활용

4-1. 프로그래밍 언어의 이해와 사용
- 프로그래밍 언어의 기본 개념과 종류에 대해 설명함
- 특정 프로그래밍 언어의 특성을 이해하면 코드의 흐름과 업무 로직을 이해하는데 도움이 됨
- 프로그래밍 언어의 종류에는 자막, 숫자 구 등이 있음
- (중요) 특정 프로그래밍 언어의 코드를 보고 그 흐름과 업무 로직을 이해하면 해당 프로그래밍 언어의 활용에 도움이 됨
- 프로그래밍 언어의 특성에 따라 서로 다른 방식으로 활용되며, 이를 이해하는 것이 중요함

4-2. 프로그래밍 언어의 반복문과 함수 이해
- 반복문의 동작은 프로그래밍 언어에 따라 다르게 구현되며, 이를 이해하는 것이 중요함
- 프로그래밍 언어에서의 업무 흐름과 코드의 흐름을 일치시키는 것이 필요함
- (중요) 무한 반복을 사용하여 업무를 진행하고, 반복문은 자주 사용되므로 이를 이해하는 것이 중요함
- 함수는 특정 기능을 반복할 수 있도록 작성된 프로그램으로, 각각 별도의 블록으로 작성됨
- 함수는 입력 처리 출력으로 구현되며, 이들을 통합하여 '인수와 매개 변수' 형태로 제공됨

4-3. 프로그래밍 언어의 입력과 출력 이해
- (중요) 프로그래밍 언어에서 입력과 출력은 중요한 개념이며, 이를 이해하는 것이 중요함
- 함수의 입력과 출력에 따라 결과 값이 달라질 수 있음
- 인수와 매개 변수를 이해하면 프로그래밍 언어에서의 입력과 출력을 더 정확하게 이해할 수 있음
- 인수와 매개 변수를 통해 데이터를 처리하고, 이를 결과 값으로 반환함
- (중요) 프로그래밍 언어의 사용은 입력과 출력에 따라 달라지며, 이를 이해하는 것이 중요함

00:01
두 번째 섹션은 선택 및 반복 제어문 섹션입니다. 아 전체적으로 문법에 대한 설명을 간단하게 나마 조금 할 필요를 있구요. 그런데 집중을 하는 부분은 문법적인 부분 보다는 실제 시험에서 이제 중요하게 봐야 되는 부분이 뭔지 그런 부분에 중점적으로 이제 기록이 되어 있다고 보시면 됩니다. 보도록 하죠. 일단 선택 체험은 우리가 이제 분기 문 이라고도 하구요. 선택 문 이라고도 하는 형태입니다. 첫번째로 이 프랑스 엘스 는 무늬의 요. 보통 우리가 문 이라는 표현을 많이 씁니다. 여기 문 이라고 써 있죠. 이프 문이라고 보통 읽어요. 조건식 이 결과에 따라 선택적으로 명령문을 실행하는 걸 이프 문 이라고 하죠. 조건 시기 차밍 경우에 에 아래의 블록의 코드를 실행한다. 라고 써있습니다. 블로 꽂아 가 없는 경우에는 하나의 코드만 실행 한다고 되어 있어요. 아래쪽에 코드를 보시면 이 부문의 이렇게 중간 어가 안 들어가 있죠.

01:00
그리고 아래쪽에도 예를 들어서 중 가라고 이렇게 있다. 그러면 이런식으로 대응이 있을 때 이거 빨간색 중 가로 안에 있는 두 개의 코드를 실행해 주는 거에요. 원래는 요. 그런데 지금처럼 중간 없는 경우에는 바로 아래 한줄만 이프 영역 발에 포함되어 있다. 이렇게 생각하시면 됩니다. 들여 쓰기 가 되어 있기 때문에 아니에요. 영사는 중 괄호가 있냐 없냐 가장 큰 포인트입니다. 아시겠죠. 오른쪽이 설명 쭉 보시면 될것 같고 나머지는 그렇게 어려운 개념이 아니니까? 넘어갈게요. 아래쪽에 보시면 은 이렇게 지금 들여쓰기 가 똑같은 레벨로 되어 있는데 한군데 말씀드렸듯이 c 언어에서 들여쓰기 는 보기 편한 것 그 이상도 이하도 아니에요. 중요한 건 중 가보다. 이렇게 알고 계시면 되겠습니다. 사양으로는 이프 l 스 에요. 방금 봤더니 품에는 조건이 참일 경우에만 수행하는 명 영문 만 코딩이 되어

02:00
있었던 거고 이프 ls 같은 경우에는 아닐 경우에 대한 실행 문 도 포함이 되는 경우입니다. 그 아래쪽에 코드를 보시면 은 n 쓰라고 되어 있는 부분이 아닐 경우 란 뜻이에요. 자 이렇게 아닐 경우에 해당하는 부분이기 때문에 위쪽에 이 풍문이 반드시 포함되어 있어야 돼요. 단독으로 사용할 수가 없다. 어 생업이 있죠. 해석은 어렵지 않습니다. 여기에 있는 조건 시기 현재 참이면 예가 실행이 되며 거짓이며 는 아래쪽이 실행이 되는 상태입니다. 여기 지금 다음 페이지에 연결이 되어있는데 요기 여기서 끝나는게 아닙니다. 이렇게 연결이 되어 있는 거에요. 요렇게 해서 본다고 하면 l 스가 여기서부터 여기까지 줘 그러니까? 이 두 줄이 s 영역에 해당되는 겁니다. 그래서 조건에 맞을 경우 예 가 출력되고 요. 조건이 맞지 않을 경우에는 이해와

03:01
애가 출력 된다는 거구요. 그 다음에 이 풍문에 바깥에 이 품에 바깥에 마지막으로 수고하셨습니다. 가 떠 있어요. 그러면 이 수고하셨습니다. 는 조건의 맛 떤 틀니 던 2 품은 바깥에 있기 때문에 반드시 수행되는 코드가 되는 겁니다. 자 그래서 결과가 어떻게 나오든 무조건 수고하셨습니다. 는 출력된다. 이런 개념을 파악을 하셔야 되요. 많아서 다중 잎은 슴은 보겠습니다. 분기가 많을 경우에 요. 분기가 샘 이상일 때 방금은 합격 불합격 이런 느낌이 얻자 나요. 지금은 합격 제 시험 불합격 이렇게 총 세 가지가 나와 있습니다. 자 그래서 코드를 보고 해석을 해 본다면 스코 점수가 80 이상이면 출력해주는 문장 그렇지 않은 경우 스코어가 70 이상이라면 그러니까?

04:00
지금 이 뜻은 80 미만 인 상태에서 70 이상 인 겁니다. 80이상 이었으며 는 여기서 해결이 되겠죠. 80 이상으로 해결이 안됐다. 그 뜻은 80 미만 이란 뜻이에요. 그래서 80 미만 이면서 70이상 인걸 찾고 있는 겁니다. 그것도 아니라면 펜스 조건이 안 나와있지만 연기에는 결국에 무슨 뜻이 포함되어 있는 거예요. 스코어가 2010 미만이라면 이라는 의미가 되는 겁니다. 자 그래서 여기서는 불합격 입니다. 를 출력할 수 있게끔 코딩이 되어 있는 거죠. 그리고 각각의 영역이 전부 중괄호 가 없죠. 그러니까? 다음 한줄만 각각 영역의 포함이 되어 있는 상태인 거에요. 여기에 nj 품은 00 후에 다음에 삼항 연산자 라고 좀 보겠습니다. 단순한 이프 문을 삼항 연산자 수식 의 형태로 표현을 할 수가 있습니다. 아래쪽에는 볼게요. 요. 이프 영양 이에요.

05:00
보세요. 자요. 기준의 충족 을 하면 c 에다가 20 을 할당하고 그렇지 않으면 c 에다가 40 을 할당하고 있죠. 어떤 변수에 줄 중 하나의 값을 집어 넣는 형태 기준 값에 따라서 기준 시계 따라서 둘 중 하나의 값을 집어 넣는 형태일 경우에는 이런 식으로 3학년 선 자 로 표현할 수가 있습니다. 유우키 에 표를 하는 거에요. 여기 할당을 해야할 변수명을 적어두고 요. 그 다음의 기준을 괄호 안에 똑같이 집어넣습니다. 그래놓고 물음표 하나 찍어주고 요. 그런 다음 조건에 맞을 때 씨의 할당 할까? 그리고 조건에 맞지 않을 때 시 해야할 당할 값을 콜론 을 기준으로 이렇게 입력을 해주면 이 오른쪽에 있는 이 품과 같은 뜻이 됩니다. 이런걸 참 항 연산자 라고 이야기해 항의 색이죠. 조건식 1 값 1 값 2 개 가지고 총 생이 포함이 되기때문에 삼항 연산자 라고 이야기를 합니다.

06:01
사람으로 스위치 케이스 디폴트 문 인데요. 보통 스위치 케이스 디폴트 까지 얘기를 안 하구요. 스위치 문이라고 보통 이야기를 합니다. 특정 데이터를 다닌 값과 비교를 한다고 내용이죠. 비교 데이터는 숫자 또는 문제만 가능하다고 되어 있구요. 이 문자도 마찬가지 코드 값이 있기 때문에 숫자 랑 비교를 한다고 생각하시면 되요. 데이터가 일치하면 유우 중요합니다. 해당 영역 뿐 아니라 아래의 모든 코드 도 함께 실행이 된다고 되어 있어요. 이걸 한번 보죠. 그게 이어져 있음을 참 좋겠는데 몸을 조금 불편하죠. 변수로 일단 두 개를 만들어 놓았죠. 랭크 변수와 리워드 변수를 만들어 놓고 각각 2와 0 을 할당하고 있는 상태에요. 그 상태에서 스위치 문이 시작됩니다. 스위치 문은 괄호 안에 정수용 데이터를 하나 집어 넣게 끔 되어 있어요. 그래서 지금은 랭크 변수를 집어넣어 낫죠. 그럼 여기에는 2 가 들어있는 것과 같은 뜻이

07:01
됩니다. 자 그러면 케이스가 모모 의 경우 이렇게 해석을 할 수 있죠. 케이스 긴 이란 뜻은 여기에는 값이 1인 경우에 반드시 에요. 자 그리고 요. 부분 지금 잘 보세요. 여기에 콜론 입니다. 세미콜론 이 아니네요. 잘 파악하셔야 되요. 어찌됐건 케이스 b-1 이런 뜻은 요. 랭크 값이 1인 경우에 시작되는 위치 란 뜻이에요. 자 그러면 케이스 인한 당연히 랭크 값이 1 경우에 시작되는 위치 겠죠. 마지막으로 케이스 3 은 당연히 랭크 값이 3 인 경우에 코드가 시작되는 위치다. 라는 뜻이에요. 그러니까? 지금은 랭크 값이 이기 때문에 리워드 에 팩을 누적 시키고 요. 다시 또 리워드 에 백을 한번 더 누적을 시키게 됩니다. 체이스 3이지만 여기서 부터 아래까지 모든 코드를 실행하게 끔 되어 있어요.

08:01
이게 기본 문법 입니다. 스위치 케이스에는 시작 위치를 정해 주고 요. 맨 아래의 코드 까지 전부다. 실행을 해 줍니다. 이게 가장 중요한 특징이에요. 그래서 결국에는 누적을 2번 하기 때문에 결과가 200의 나온단 얘기죠. 다음으로 요. 스위치 케이스안에 디폴트 라는 영역을 만들 수가 있습니다. 디폴트는 모든 데이터가 일치하지 않는 경우에 대해서 수행한 코드를 입력할 수 있습니다. 일반적으로 가장 아래에 위치할 수 있구요. 일치하는 데이터가 있는 경우에도 당연히 수행이 되요. 자 현재 랭크 값이 옵니다. 그러면 일도 아니고 이도 아니고 삶도 아니죠. 그러면 애가 수행 된다는 뜻이에요. 근데 만약에 여기에서 랭크 값이 일이었다고 하면은 여기서부터 모든 코드가 다. 시행됩니다. 그러면 350 라는 값이 나오겠죠. 자 이렇게 까지 9분을 해 주실 수

09:01
있으시면 됩니다. 항상 시작 위치를 정해 주는 거지 종류의 위치는 맨 아래 다. 이렇게 생각하시면 되요. 자 그런데 우리가 이런 종류의 코드 이런 형식의 코드를 본다고 하면 보통은 케이스 이 일대 이 번만 딱 수행을 하는게 상식적 이잖아요. 그래서 이 부분을 보완할 수 있는 장치가 브레이크 라이닝이 있어요. 브레이크는 브레이크 늘 만나는 순간 해당 블록을 벗어날 수 있습니다. 데이터가 일치하는 경우 해당 케이스 영역에 해당하는 코드만 실행하거나 코드 생의 중지 점 을 지정해야 하는 경우에 사용된다. 고 되어 있죠. 코드를 보면서 또 설명을 해볼게요. 자 지금 이거는 다른 입력하고 요. 단어를 입력한 그 값에 따라서 총액 며칠 까지 있는지 그 다리 그걸 확인하는 겁니다. 자 여기 봄에는 4 라고 써 있죠. 자사 인 경우가 여기 있습니다. 자 그러면 코드 시작은 여기서부터 해요.

10:00
아래쪽에 아무 코드도 없지만 일단 무조건 아래까지 쭉 내려갑니다. 만약 261 경우에는 여기서부터 이렇게 내용 하겠구요. 9일 경우에는 여기서부터 이렇게 내려가 겠죠. 11일 경우는 마찬가지 여기서 부터 시작을 할 거구요. 어쨌건 4 6 9 11 이라는 값이 나왔다. 라고 하면 무조건 예 가 실행되게 끔 되어 있어요. 자 그리고 나서 원래는 이 아래쪽에 있는 여기 있는 코드도 올레는 실행을 해 줘야 되는데 중간에 뭐가 있냐면 브레이크 라는 의문이 있습니다. 브레이크를 만나게 되면 여기는 실행하지 않고 수행하지 않고 스위치 문을 벗어 나게 되요. 종료 와 비슷한 개념이라고 보시면 됩니다. 이렇게 수행을 할 수 있다는 거죠. 그리고 여기 위에 2 도 마찬가지죠. 만약에 먼 씨가 이였다고 하면 이 부분이죠. 원래는 여기서 아래로 쭉 내려가 써야 되는 건데 브레이크를 만나기 때문에 여기서 끊긴다는 거에요. 그래서 이렇게 출력만 하고 스위치 문이 종료가 된다. 라는

11:00
뜻입니다. 레이크 문을 잘 활용하고 잘 파악할 수 있으셔야 해요. 넘어가서 이번에는 반복문 입니다. 사실 핵심인 이 거죠. c 언어 관련 코드 문제를 푼다고 하면 거의 대부분이 반복문 에 해당하는 문제가 많이 나올겁니다. 요즘에는 반복문이 그렇게 복잡하게 나오신 또 않는걸로 좀 추세가 그렇긴 한데 어쨌든 당연히 공부를 해야겠죠. 기본 정식이 중요합니다. 자 이 부분이죠. 포 포 무늬의 지금 배울게 괄호 안에 촉 이식과 종료 분기 그 다음에 징 감식을 세미콜론 을 통해서 콜론 아닙니다. 세미콜론 이에요. 세미콜론 세미콜론으로 9분합니다. 자 그래서 종료 분기가 참인 동안 초기 식 부터 시작해서 증감 식을 계속 한 번씩 한 번씩 적용하면서 이 중괄호 안에 있는 반복 영역을 계속 반복을 하겠다. 라는 의미가 됩니다. 보통은 지정한 범위나 횟수만큼 해당 블록을

12:01
반복한다는 개념으로 생각하시면 되구요. 블록이 없으며 마찬가지 맨 처음에 있는 한 행만 포함이 된다. 라는 거 그리고 마찬가지 브링크 문을 통해서 벗어날 수 있다. 까지 보면 되겠습니다. 자 그래서 기본틀을 본다. 라고 하면 이렇게 나와요. 일단 합계를 구할 변수를 하나 만들고요. 그 다음에 반복의 필요한 변수를 하나 만듭니다. 몇 번 반복해 는지 이런것들을 파악하기 위해서 줘 사건에서 폼 운행은 반드시 이런 밤 복령 변수가 하나 들어가야 되요. 아이는 이라고 되어있습니다. 변수 i 에 나가 일을 집어넣고 있죠. 초기화를 하고 있는건데 포문을 수행하는 최초 딱 한번만 실행되는 부분이에요. 아이가 일부터 시작해서 라고 해석하면 됩니다. 자 그리고 어때요. 아이가 10 이하일 때 까지 아이를 1씩 증가 시키면서 반복을 하세요. 라는 뜻이 됩니다. 자 그러면 라 이 값은 일부터 시작해서 이 일대 3일 때 사이일 때 빙빙 된 자궁 1대 11 때까지

13:04
반복을 하게 됩니다. 반복을 하면서 어떻게 되요. 썸 이라는 변수에 해당 i 값을 계속 누적시 키는 코드가 나오고 있는 거죠. 자 그러니까? 프린트 f 에서 썸을 해서 출력을 할 때는 1부터 10까지의 값이 누적된 1부터 10까지의 합 이게 출력이 된다는 겁니다. 자 그런데 여기서 중요한 점은 이 거에요. 현재 i 값이 얼마나 나는 거죠. 보통 u 정도까지는 기본적인 부분이고 요아이 값을 출력하려고 하면 보통은 9 아니면 10 아니면 11 여기서 왔다갔다. 하실 겁니다. 경계 것이니까요. 이 부분은 질문게시판에 도 질문이 굉장히 자주 올라오는 부분인데 아이가 1부터 10까지 1씩 증가 하면서 반복을 하라고 되어 있어요. 자 그러면 이 포문 이 끝난 다음 을 i 값을 출력해 쓸 때 해당 i 값이

14:00
몇 시니 하라는 거에요. 답은 10일입니다. 외 11인 야 면 1부터 10까지 진행하면서 반목 을 하라고 했기 때문이에요. 그러니까? 11일 때도 반복을 해야 되요. 그러니까? 11 때 반복을 하고 10일이 되면 마무리가 되는 거죠. 2분기 가 맞지 않기 때문에 그래서 10일이 정다미 되는겁니다. 이해 되시나요. 우리가 학생 공부로 생각을 해보세요. 19 성인가요. 19살 때 까지 개인에서 공부를 하는 거에요. 그러면 아니라고 생각해 보면 아이가 한 살 부터 시작해서 아이가 19 이아인 동 안까지 재해석 한 악령 1학년 올라가면서 용어 킹이 아닙니다. 이에요. 1 학년 1학년 올라가면서 공부를 한다. 공부를 반복한다고 생각을 해보세요. 자 그러면 애가 공부를 끝낸 단 얘기는 성인이 됐다는 얘기죠. 그러면 ui 값이며 됐다는 의미에요. 22 듯한

15:00
소리 입니다. 그래서 u 값 보다. 한단계 더 증강 해서 마무리가 된다. 여기에 포인트인 거에요. 항상 몇 번 반복을 했을 경우에 맛이지만 한복린 변수 라던지 마지막 결과 깝 이런것들이 확연하게 차이가 나서 틀리는 경우는 거의 없습니다. 보통 한 당의 주 당 기 여기서 왔다갔다. 하다가 틀리는 경우가 많기 때문에 이 부분을 조심해 주셔야 된다. 그런 얘기 구요. 제 다음으로는 컨티뉴 문이 있습니다. 컨티뉴 는 특정 블럭에서 컨티뉴 용은 써있는 아랫부분을 다. 무시하게 딴 뜻이 되요. 그리고 다시 앞으로 돌아옵니다. 반복을 하는데 아래쪽은 무시하고 계속 반복을 하게 딱 먹이를 의미가 되는 거죠. 컨티뉴 모는 단독으로 사용하진 않아요. 콘티 문을 단독으로 사용하게 되면 그 아래쪽에 있는 코드는 쓸모가 없어지기 때문에 특정 조건에서만 건너뛰기 또 하는 그런 형태를 많이 사용합니다. 여기 아래에 있는 코드처럼 으

16:00
전체적으로 똑같이 반복을 하고 있는데 그냥 게 아이를 2로 나누었을 때 나머지가 dd 라면 홀씨 라면 똑같은 뜻이에요. 컨티뉴 아래 코드를 건너 뛰겠습니다. 아이 코드가 뭐냐면요. 거 죠. 이 코드를 수행 하지 않겠읍니다. 란 뜻이에요. 그러면 해당 반복을 끝나고 다시 처음으로 넘어가는 겁니다. 이런 식으로 진행을 하는게 포 물 그리고 헌팅 님은 브레이크 몸은 이런 것들을 통해서 여러가지 분비를 만들 수가 있다. 요렇게 보시면 되겠죠. 어머나 서 자 디버깅 표 작성 이라고 되어 있죠. 디버깅 툴 작성은 실제로 시험에 나오는 부분이 아니에요. 여러분들이 공부를 할 때 예를 들어서 뭐 반복문이 어떻게 돌아가는지 잘 모르겠다. 프로그램이 어떻게 흘러가는 지 모르겠다. 이렇게 질문들을 많이 하시는데 거의 대부분은 이해를 못하셔서 그런건데요. 이해를 못하시는 이유중에 8 90% 는 앎이 있었기 때문이에요. 보트 눈으로 따라가거나

17:01
머리로만 하거나 보통 이런 식으로 진행을 하시는데 반드시 써서 하세요. 그래서 쓰는 방법을 알려드리려고 디버깅 표 작성 이라는 부분을 따로 적어 둔 겁니다. 반복문 에 영향을 주는 변수 반복 포용의 코드 이런 것들은 라이어 내서 순서대로 나열해서 표 형태로 구현한 거에요. 반복문 의 반복 패턴을 파악하는 데 유용하다고 되어 있습니다. 지금이야 예제 니까? 1부터 10까지 1부터 20까지 반복 이렇게 되어 있는데 실제로 문제에서는 일부터 뭐 배까지 반복을 할 수도 있고 2000 까지 반복을 할 수 있어요. 그러면 그 감동을 일일이 다. 해가면서 결과를 낼 수는 없잖아요. 그렇기 때문에 패턴 파악이 중요합니다. 여 이러 이러 이러한 패턴은 어쭈 간다고 하면 몇 100번째 값은 1억 있구나 이런 식으로 예상을 하신 있어야 되는 거죠. 그래서 이 패턴을 파악하는 데 디버깅 표가 굉장히 도움을 준다. 뭐 그런 얘기죠. 규칙은 따로 있는건 아니에요. 이것도 보편적인 정의 지 확실하게 정해져

18:02
있는건 아닙니다. 이 부분은 표를 보면서 같이 해석을 해 보도록 할게요. 방금 봤던 코드입니다. 이 코드를 디버깅 표로 작성을 한다고 했을 때 이렇게 나온단 얘기죠. 자 변수를 요렇게 만들어 놓았죠. 이거는 용이 앞에 요렇게 기록을 해 놨습니다. 자 근데 지금 보면 시작 값이 영선이 일이죠. 위쪽에 선영 인데 자 이거 왜 그러냐면 초기값은 초기 값이고 실제 반복을 하면서 시작되는 값이 있어요. 초기 식이죠. 초기 식 용해 일 이라고 되어 있기 때문에 애가 1인 거에요. 반복하기 직전에 값을 정원 왔다고 생각하시면 됩니다. 아시겠죠. 적성 같은 경우에는 별도로 더하는 게 없으니까? 영이 고정 잉 거구요. 그리고서 순서대로 적어 주시면 됩니다. 가장 먼저 뭘 책 하냐면 연기 1번이 종료 공기 줘 이거 인지 일단 확인을 하구요. 그 다음에 이 풀을 쓰입니다. 이프 에어 왼쪽에 참일 경우 오른쪽에

19:05
수행해야 하는 코드를 적어주시면 되요. 지금 이거 하나밖에 없죠. 그리고 나서 이프 여행이 끝나요. 그 다음에 썸 에다가 아이가 서 부적하고 있는 부분을 돋습니다. 자 그러면 반복이 끝났죠. 반복이 끝나면 은 증감 식을 한번 수행 해요. 그리고 다시 종료 공기 그 다음에 밥먹고 요. 증 잠식 이런식으로 반복을 합니다. 자 그래서 지금 보면 첫번째로 아이가 1일 경우 조현지 라인은 1인 상태에서 반복이 시작 되는 거잖아요. 자 그래서 아이가 1 일 경우에 아이가 10 이하 인지 확인을 합니다. 그럼 당연히 친구 겠죠. 12 하니까요. 그러니까? 계속해서 진행 하겠죠. 이거는 아이가 11 때도 이렇게 써 보면 간단 하잖아요. 이건 틀린 얘기가 아니죠. 시 분 심히 양이다. 10 은 10 보다. 작거나 같다. 이렇게 써 있는 거잖아요. 그러니까? 10도 포함이 되는 거죠. 이런것들도 파악할 수가 있구요.

20:00
계속해서 보면 이쁜 나왔구요. 볼 수 있니 판단을 하고 있어요. 그래서 홀수 일때는 추모 구요. 투 라고 하면 컨티뉴 를 만나기 때문에 컨테이너 수행됩니다. 컨티뉴 가 수행되는 얘기는 요. 부분을 건너 뛰게 다니게 되죠. 그리고 다시 넘어가서 증가한 음식으로 증강을 합니다. 그럼 아이가 이 가능했죠. 아 이거 인 상태에서 또 진행을 하는 거에요. 당내 있는 툴을 거구요. 대신에 이해가 달라지겠죠. 이는 2로 나누었을 때 나머지가 0이 나옵니다. 그렇기 때문에 컨티뉴 로 수행 하지 않죠. 건 어디 부여 그러니까? 또 반대로 누 정문을 수행하게 끔 되어 있어요. 그리고 또 증가를 하죠. 이런식으로 디버깅 표만 잘 작성을 할 수 있어도 정답을 맞추는 데 굉장한 도움을 받을 수가 있어요. 자 그래서 이렇게 제가 저 같은 경우에는 지금 여러가지 10줄 거의 다. 적어놨는데 여러분들은 5번 많아봐야 5번 네 번만 해도

21:00
패턴 파악이 가능하실 거에요. 여기 보시면은 투로 일때는 홀씨 일대 조 홀수 일때는 건너뛰고 요. 짝수 일 때는 누적하여 요. 홀 쉴 때는 건너뛰고 요. 짝수 일 때는 부족하죠. 자 그럼 무슨 얘기에요. 짝수 일 때만 우정을 하면 되는구나 라는 걸 파악할 수 있어요. 자 그래서 아이가 이 일대 4일 때 6일 때 8일 때 11 때 이렇게 수행을 하는구나 라고 판단해 보면 그때 그때 해당 내는 결과를 예상할 수가 있게 되죠. 여기까지가 기본적인 포문 에 대한 부분이었어요. 자 이번에는 조건 제한 반복문 이라는걸 좀 볼 겁니다. 방금까지 는 조건이 물론 있었는데 보통 갯수 난 범위 이런 것들을 파악하는 데 사용한다. 고 했죠. 와 1 무는 지정한 조건을 만족하는 동안 계속 반복하는 거에요. 몇번을 활용하는게 아닙니다. 범위 라던지 시간이라 든 지 햇수로 이런 걸 지적하는 게 아니라 특정 조건을

22:01
만족하는지 를 체크 하는 겁니다. 조건을 먼저 판단을 한 다음의 코드를 반복하기 때문에 조건에 따라 당연히 전혀 반복이 되지 않을 수도 있겠죠. 마찬가지 브레이커 몸과 콘팅 님은 사용도 가능해집니다. 자 코드를 계속해서 좀 볼까요. 코드가 복합적으로 좀 나오기 시작을 하고 있죠. 하나하나 잘 체크를 해주셔야 됩니다. 첫번째로 변수 2개 만들었구요. 썸 은 누적 할 때 쓸 것이기 때문에 영어로 총기 안했구요. 임프 슨 나중에 입력을 받을 거 기 때문에 지금 초기화를 하실 않아도 괜찮은 거에요. 어떤 값을 입력받아서 인풋 에 집어 넣겠다는 의미가 되는거구요. 그 인풋 값에 따라서 요. 영역 안에 있는 애들이 반복이 되니 안되냐 를 판단할 수 있습니다. 그때그때 달라 지겠죠. 여기서 포인트는 와 일은 조건을 먼저 체크한 다음에 코드를 수행한다. 이렇게 보시면 됩니다. 자 그래서 이와 일에 단점을 보안한

23:01
게 좋아 일문 이에요. 와 이모는 1군에 말씀드렸듯이 조건에 따라서 한번도 수행되지 않을 수 있어요. 자 그래서 좀 아이리 나온건데 2와 일은 일단 수행을 먼저 하고요. 다음에 마지막에 이렇게 조건을 체크 합니다. 그러니까? 조건이 아무리 복잡하고 어려워도 최초 한번은 실행할 수 있다는 뜻이에요. 와 1 블록 안에 있는 영역에 코드를 수행할 수 있다. 이렇게 보시면 됩니다. 자 그러면 지금까지는 조건을 이야기 했는데 이 조건을 무조건 투르가 나올 수 있는 기준으로 잡는 다고 하면 무한 반복의 빠질 수 있습니다. 루프 라고 이야기 하죠. 고 총 이제 무한 반복이 높은데 무한 루프 라고 이야기하는 경우도 있어요. 정확하게는 루프 화보 안보이죠. 조건식 의 결과가 항상 참인 경우에 반복 구역을 무한 반복하게 되는데 코드의 흐름 과 업무 로직을 일치

24:00
지키기 위해서 루프와 브레이크 를 활용해서 프로그램을 구현할 수 있다고 되어 있습니다. 그리고 이 부분도 문제 나온적이 있어요. 언어 마다. 참 값을 표현하는 방법이 다. 달라요. 그래서 무한 반복을 하고 싶을 때 사용하는 논리 값이 다릅니다. 어 c 언어 같은 경우에는 숫자 구요. 자막 같은 경우에는 추진하는 키워드 파 에서는 첫 글자가 틴트 5 요렇게 잡혀 있습니다. 잘 체크를 해주셔야 겠죠. 자 그리고 코드를 보면서 요. 얘기를 해볼게요. 코드의 흐름 과 업무 로직을 일치시킨다. 자 위쪽에 있는 코드를 다시 한번만 보고 내려 오도록 하겠습니다. 값은 1 입력 받아요. 그리고 입력받은 값을 누적하여 그 상태에서 인풋 입력 값이 줘 인풋 없이 0 이상 인지를 확인하고 있습니다. 만약에 음수를 입력했다. 고 하면 종료가 되겠죠. 근데 보통 우리가 이제 음수를 입력했는지 확인을 한 다음에 종료를 하는거라 음수가 아닌가 0보다. 크거나

25:02
같은 값이 줘 0 이상인 값을 입력했을 때 이 프로그램이 지속된다는 거랑 결국 이 같은 의미지만 뉘앙스가 보통 달라요. 그래서 우리가 보통 로키 표현을 하지 않죠. 예를 들어서 뭐 종료 라고 하면 종료 버튼을 누르면 종료합니다. 요기 가장 일반적인 어순이 잖아요. 우리가 생각하는 그런데 지금 요렇게 구현을 하게 되면 종료버튼을 누르지 않으면 프로그램이 계속 켜 있습니다. 라는 뜻이라는 같은 거에요. 뭔가 좀 어색하죠. 그렇기 때문에 방금 봤던 것처럼 우리가 생각하는 일반적으로 상식적인 업무 흐름 과 코드의 흐름을 똑같이 2인치 시킬 수 있게끔 무한 반복을 쓰는 겁니다. 일단 y 흑인을 무한 반복을 시작합니다. 그래놓고 코드를 입력하고 요. 입력한 코드 값이 음 수면 프로그램을 종료합니다. 이렇게 해석할 수 있어요. 그런데 만약 이 그렇지 않다고 하면 입력 값을 섬의 누적을 하는 거죠. 잉 에 훨씬 더 해석하기가 편해요. 흐름도

26:03
좋구요. 그렇기 때문에 실제 이런 식으로 개발을 하는 편입니다. 문제의 반복문 은 굉장히 자주 나올 것이기 때문에 실제로 문제를 여러 개 풀어 보면서 반복문을 굉장히 자유자재로 해석할 수 있게끔 공부를 하시는게 좋아요. 다음으로는 함수입니다. 함수는 필요할 때 특정 기능을 반복할 수 있도록 작성된 프로그램이라고 보시면 됩니다. 함수는 각각 별도의 블로그로 작성 된다. 라고 되어 있고요. 블록 안에 소모 출 된다. 라고 되어있어요. 얘를 들어서 메인이라 낸 블럭이 있다. 그러면 그 안에 a 안 함수를 호출한다. 뭐 이런 얘긴데 a 라는 함수는 2 메인 함수 바깥에 있는 블로깅 의 정의가 되어 있다. 뭐 그런 뜻이 됩니다. 평소 가 호출되면 해당 함수가 뭐죠. 수행될 때까지 호출 한 프로그램은 진행을 잠시 멈춘다. 고 내용이죠. 이번 또 체크를 해주셔야 되요. 일반적으로 함수는 입력 처리 출력으로

27:02
구현 된다고 되어 있는데 이것을 줄여서 ip 오라고 합니다. 자 그런데 함수를 이 ipu 기능을 다. 집어 넣을 건지 이렇게만 집어 넣을 건지 이렇게만 따로 얘만 집어넣고 이것을 따로 처리를 할 건지 이런거에 따라서 그 함수의 구성이 달라져요. 이 부분도 같이 한번 보겠습니다. 자 우선 표준 라이브러리 자 이건 외우세요. 라이브러리가 보였죠. 기본적으로 탑재되어 있는 겁니다. c 언어에서는 개발자 편의를 위해서 기본적으로 미리 개발된 함수들을 기능별로 묶어서 제공하는데 이걸 사용하려면 전 천이 지시자 차 긴코 올누드 가 필요해요. 그래서 # 인클루드 이 라이브러리 파일 이름 이렇게 써 주면 은 해당 라이브러리를 사용할 준비가 되는 겁니다. 여러분은 벗어 있죠. 자 그러니까? 우리가 프린트 애플을 만들지 않았지만 사용할 수 있는 이유는 여기에 포함이 되어 있었고 이걸 통해서 불러와 않기

28:00
때문입니다. 이렇게 알고 계시면 될 것 같구요. 요. 함수명 문제 나올 수 있으니까요. 각각 영어단어 메워 듯이 암기를 해주시는게 좋습니다. 자 이번에는 함수의 정의와 호출이 에요. 함수는 맹 남수 블록 의 바깥에서 정리 된다고 되어있죠. 그리고 반한 타입에는 잘 하는데 값의 타입을 지정하고 요. 반환값이 없는 경우에는 보이더라고 적는다. 라고 되어 있습니다. 자 그래서 이렇게 정의를 하고 나서 실제 호출할 때는 함수명 과 괄호 안에 필요한 인수 만 집어 넣는 형태로 수행이 될 겁니다. 아래쪽에 코드를 보시면 메인 함수 바깥쪽에 멀티 라는 함수가 지금 정의되고 있습니다. 보이드 라고 되어 있죠. 보이드 는 반환값이 없다는 뜻이에요. 만약에 여기에 인 트 갔어 있다라고 하면 반환값이 정수미 다. 란 뜻이 됩니다. 이렇게 보시면 되구요. 인 트 웨 어 어 여기 안에 있는 코드 한번 똑같이 들어가는 거구요. 지금 보시면은 입력과

29:01
천이 출력이 함수 안에서 전부 이루어지고 있죠. 이런식으로 수행이 되고 있고요. 그 다음에 2 멀티 함수를 여기서 호출하고 있습니다. 호출을 이렇게 하는거 다. 어 정릉 이렇게 되기는 거다. 요렇게 같이 이야기 해봤습니다. 사용으로 이 코드를 계속해서 변형을 해 볼 건데 이번에 리턴이 있습니다. 황금 전까지는 m 니 없었죠. 리턴이 없었고 이 결과를 함수 안에서 출력을 하고 있어요. 자 그런데 이걸 바깥으로 매 보자는 겁니다. 자 그래서 여기 보시면은 계산까지 했는데 지금 출력이 없죠. 대신에 리턴 on a 라는 문장이 있어요. 자 그러면 아래쪽에 맹인이 라는 함수에서 멀티를 호출 했어요. 그래서 요렇게 중 진행됐고 m 4 a 가 나왔습니다. 그러면 a 에 해당하는 값이 여기에 요렇게 든다고 생각하시면 되요.

30:01
그런 결국 res 에는 멀티 함수의 호출 결과 a 에 해당하는 값이 할 강이 되는 거죠. 그리고 나서 뭐 res 를 출력을 해 본다. 이런 느낌이라고 보시면 됩니다. 이렇게 정의를 하고 따로 호출해서 사용한다. 요렇게 보시면 되겠죠. 자 이번에는 인수와 매개 변수 우리가 ipo 입력 처리 출력 중에 방금은 리처 를 이용해서 출력 값을 밖에서 수행하는 형태로 공부를 했는데 이번에는 입력도 바깥으로 꺼내 보는 겁니다. 자 그래서 외부에서 값을 집어 넣어 주고 집어넣은 값을 내부에서 받아가지고 처리를 하는 이런 형태인데 내부에서 받으려면 매개변수가 필요한 거구요. 외부에서 보내려면 인수가 필요한 거에요. 자 그래서 외부에서 함수에 인수를 담아서 호출을 하구요. 포 충당한 내부는 매개

31:01
변수를 통해서 인수를 건네 받는다. 이렇게 생각하시면 되겠습니다. 자 마찬가지 코드를 또 봐야겠죠. 이 위쪽에 멀티가 굉장히 줄었죠. 원래 위쪽에 스캔해 폰이 있고 프린트 f 도 있었는데 전부 아래로 내려 왔죠. 일단 스캔 애플을 통해서 변소에 이에 값을 할당 받고 있죠. 그 값을 멀티에 보냅니다. 여기에 해당하는 부분이 인수 해요. 자 그러면 요. a 에 해당하는 값이 1로 들어가게 되는데요. 요기에 매개 변수입니다. 그래서 다시 정리를 하자면 멀티 함수를 호출할때 인수가 필요하고요. 그인 수에 해당하는 데이터가 저장되는 공간이 매개변수 다. 이렇게 보시면 되구요. 그 매개변수는 실제로 계산에 셀 수도 있다. 까지 파악을 하시면 되겠습니다. 호출 순서가 중요합니다. 세부적으로 빛의 나게 접근을 하실 필요가 있어요.

32:01
마지막 6번 값에 의한 전달 입니다. 갑 실행에 의한 전달은 콜 바 의 메뉴 라고도 하는데 이거 말고 참조에 의한 전달 돼 있어요. 그건 나중에 포인터를 공부할 때 같이 다뤄 보도록 하구요. 여기서 포인트는 값이 전달될 때 복사 대해서 전달 된다는 뜻이에요. 그러니까? 서로 별도의 갑시다. 라는걸 파악할 수 있어야 된다는 거에요. 코드를 한번 같이 볼게요. 여기 보시면은 a 값을 1 증가 시킨 상태에서 출력을 한번 해 보고요. 그 다음에 하프 라는 함수를 호출 하면서 인쇄로 b 를 넘기고 있습니다. 자 그럼 현재 b 에는 22 라는 값이 저장되어 있어요. 요. 22 이렇게 들어가고 있죠. 그러면 여기서 b 를 넘겼다는 것은 22 라는 값이 1로 들어갔다는 거에요. 작은데 여기에 있는 값과 영희의 있는 값이 별개 라는 거죠. 복사가 되서

33:00
자 그런데 지금 어떻게 하고 있어요. h 에 있는 값을 2로 나누고 그럼 심히 줘 이심을 다시 h 에 집어넣고 있어요. 자 그러면 현재 22 라는 값이 10으로 줄어 잖아요. 그래놓고 출력을 해보면 상식적으로는 12 출력 되어야 할 것 같지만 12 출력되지 않습니다. 22 중요해요. 왜 그러냐면 얘는 복사본 이기 때문이에요. 내가 출력하고 싶은 건 원본 2 줘 그렇기 때문에 이 부분이 문제로 나올 수 있는 확률이 높아지는 거죠. 좀 복잡하니 까요. 이해가 되실지 모르겠네요. 이 부분은 참조에 의한 전달 참조 값에 의한 전달 공부할 때 다시 한번 짚고 넘어가도록 할게요.

728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/M-GEyLJgqLs?si=dmpkiZJExUSz_EvC

1. 프로그래밍 언어 공부와 시 언어의 특징

1-1. 프로그래밍 언어 공부와 시 언어의 필요성
- 프로그래밍 언어는 국민의 입력출력 기능에 대한 이해를 돕는 도구임
- (중요) 시 언어는 언어의 기초를 제공하여 프로그래밍을 쉽게 이해하게 함
- 시 언어를 모르는 사람은 프로그래밍을 공부하는 데 어려움을 겪을 수 있음
- 정보처리기사 과정이란 언어 3가지를 기초로 시 잡아 파이썬 공부를 하는 과정임
- 별도의 시 언어 기초 강의가 필요할 수 있음

1-2. 시 언어의 특징과 기본 규칙
- 시 언어는 뛰어난 이식성을 가지고 있으며, 효율적인 연산을 가능하게 함
- 시 언어는 블록 구조로 이루어져 있으며, 명령문은 세미콜론으로 마무리됨
- 시 언어에서는 대소문자를 엄격하게 9품한다는 것이 기본 규칙임
- (중요) 모든 명령문은 중 괄호로 감싸져 있으며, 연산자나 기능 염색 기능은 포인터 등을 통해 제공됨
- 시 언어에서는 전처리기 라이브러리를 사용하여 주석을 사용함

1-3. 상수와 문자형의 표현, 변수 선언 규칙
- 상수는 정해진 값을 의미하며, 값의 표현 방식에 따라 달라짐
- 정수형 데이터를 표현하는 방법은 10진수, 2진수, 8진수 등에 따라 다르게 표현됨
- 문자형 상수는 작은따옴표로 감싸서 표시하며, 특정 코드 값을 저장함
- (중요) 문자열은 큰따옴표로 표현되며, 문자와 문자열은 다름
- 변수 선언 시 헝가리안 표기법을 사용하며, 데이터 타입을 명시함

2. 프로그래밍 언어의 기본 개념과 환경 설정

2-1. 프로그래밍 언어의 기본 개념
- 프로그래밍 언어는 컴퓨터에 명령을 내리는 도구로, 대표적으로 C언어가 있음
- 프로그래밍 언어는 목적어를 의미하는 천사와 목적어 간의 관계를 설명하는 체계적이고 일관된 명령어로 구성됨
- 프로그래밍 언어는 상황에 따라 다양한 유형의 데이터를 저장하고 관리할 수 있음
- (중요) 프로그래밍 언어 환경 설정은 프로그래밍 언어의 기본 개념을 이해하고 효과적으로 사용하기 위해 필요한 초기 조건 설정임

2-2. 프로그래밍 언어 환경의 종류와 사용 방법
- (중요) 프로그래밍 언어는 컴퓨터의 환경에 따라 다른 환경에서 다른 환경 설정이 필요함
- 프로그래밍 언어 환경에는 컴퓨터의 CPU와 메모리, 운영체제 등이 포함됨
- 환경 설정은 프로그래밍 언어의 성능과 효율성을 향상시키기 위해 반드시 필요한 과정임
- 환경 설정에는 기본 환경 설정과 추가 환경 설정이 있음

2-3. 프로그래밍 언어의 데이터 타입과 변수 명명 규칙
- 프로그래밍 언어의 데이터 타입은 컴퓨터가 데이터를 저장하고 처리하는 방법을 결정하는 데 중요한 역할을 함
- 변수는 데이터를 저장하는 공간 혹은 그 공간에 저장된 값을 의미함
- 변수 명명 규칙은 변수의 이름을 간결하고 기억하기 쉽게 지정하는 방법임
- (중요) 또한 규칙은 데이터의 변동을 줄이고 충돌을 방지하는 데 도움을 줌

3. 표준 입력/출력

3-1. 기본 개념 이해
- 퍼센트 옵션 등 자연수 표현 옵션을 설명함
- 숫자를 표현할 때 빈 공간을 0으로 채우는 것과 같은 숫자 표현 방법을 강조함
- 퍼센트와 마찬가지로 체언의 빈 공간을 0으로 채우는 또 다른 옵션을 소개함
- 플러스호의 사용에 대해 설명하고, 숫자 앞에 부호를 삽입하는 방법을 알려줌
- 숫자 배열을 이용해 문자열을 입력받는 키보드 입력 함수에 대해 설명함

3-2. 표준 입력 함수
- 키보드 입력을 받는 표준 입력 함수와 모니터를 통해 출력받는 표준 출력 함수를 소개함
- 입력 변수를 생성하고, 함수의 결과값을 문자열로 할당하는 과정을 예시로 보여줌
- 입력을 받는 키보드 함수에서 문자열 저장 공간이 문자 배열에 있다고 강조함
- 's', 't', 'e'로 구성된 서식 문자열을 입력받는 '스캐닝' 함수를 설명함
- 's'를 문자열로 인식하고, 't'를 실수로 인식하며, 'e'를 띄어쓰기로 변환하여 저장하는 과정을 보여줌

3-3. 표준 출력 함수
- 모니터를 통해 출력받는 표준 출력 함수에 대해 설명함
- 입력받은 문자열을 저장할 수 있는 공간이 '그레이드' 변수에 있다고 강조함
- 's', 't', 'e'로 구성된 서식 문자열을 입력받는 '스캐닝' 함수를 예시로 보여줌
- 's'를 문자열로 인식하고, 't'를 실수로, 'e'를 띄어쓰기로 변환하여 저장하는 과정을 보여줌
- (중요) 's캐닝' 함수에서 's'를 문자열로 인식하고, 't'를 실수로, 'e'를 띄어쓰기로 변환하는 과정은 암기해야 한다고 강조함

4. 문자열 활용

4-1. 문자열 생성과 입력
- 문자열 생성과 초기화를 통해 문자 저장 공간을 설정함
- 문자를 직접 입력하거나 변수를 활용해 문자열에 저장 가능함
- 문자 배열을 생성해 문자열로 초기화하는 방법도 있음
- 문자열에 변수명을 넣어 입력하는 방법도 있음
- (중요) 문자열에 실제 문자를 입력할 때는 변수명을 사용해 입력해야 함

4-2. 문자열 변환과 출력
- 문자열을 수정하거나 변환할 수 있고, 이는 문자열의 주소를 수정하는 것과 같음
- 문자열의 값을 직접 수정할 수도 있고, 문자열의 주소를 수정해 변경할 수도 있음
- 문자열을 출력할 때는 문자열의 초기화를 통해 새로운 문자열을 생성함
- 문자열의 변수명을 사용해 입력하는 방법도 있음
- 프린트를 통해 문자열을 출력할 수 있고, 문짝 열명을 활용해 문자열을 출력할 수 있음

4-3. 서식 문자열
- 서식 문자열은 빈 칸을 포함해 특정 형식의 문자열을 의미함
- 문자열을 출력할 때, 서식 문자열을 사용하면 처리가 더 복잡해짐
- 서식 문자열 내에 작은 따옴표를 넣어 문자열에 표시해야 함
- 퍼센트를 포함한 문자열을 출력할 때, 서식 문자열에 작은 따옴표를 넣어야 함
- 퍼센트 문자열을 출력할 때, 소수점 이하 한 자리 까지만 표현하도록 지정해야 함

5. 산술연산 식

5-1. 연산자 종류와 연산 우선순위
- (중요) 연산자의 종류와 우선순위에 대해 암기해야 함
- 연산자는 더하기, 빼기, 곱하기, 나누기 등이 있음
- 연산자 우선순위는 중요하며, 연산이 일어날 때 지수를 먼저 계산함
- (중요) 동등한 계산이 있을 경우, 결과 값이 달라지므로, 연산 결과는 데이터 타입에 따라 다름
- 데이터 타입에 따라, 결과 값이 정수와 실수의 값으로 나뉨

5-2. 관계 연산
- 데이터의 크기, 작은지, 큰지, 같은지, 다른지 등을 비교하는 연산자가 있음
- 데이터의 크기를 비교하는 연산자에는 '==', '==지 않다'가 있음
- 데이터의 '있다'를 확인하는 연산자에는 '==', '==지 않다'가 있음
- (중요) 관계 연산에서는 데이터의 값이 아닌, '같다', '다른다'를 구분해야 함

5-3. 산술 연산 식
- 산술 연산 식에서 연산의 우선순위를 정하는 방법에 대해 설명함
- 산술 연산에서, 나눗셈의 결과는 실수가 포함되어야 정확함
- 나눗셈 연산을 할 때, 실수를 포함해 계산해야 함
- 연산 결과가 실수로 나타나면, 결과를 2진수로 변환해야 함
- 연산 결과가 정수와 실수로 나뉜다면, 결과가 정수로 나타남

6. 논리 연산자와 증감 연산자의 이해

6-1. 논리 연산자와 조건식 이해
- 논리 연산자에는 놀리 식이나 조건 시기 등이 있음
- (중요) 놀리 식은 논리 값을 연산하여 하나의 논리 값을 구하는 기능을 가짐
- 조건 시기의 경우 두 개의 조건이 만족될 때에만 어떤 연산이 이루어짐
- 조건 식이 어떻게 연결될지는 결과가 달라질 수 있음

6-2. 비츠 논리 연산자와 복합 게임 연산자 이해
- 비츠 논리 연산자는 이진수의 각 자리를 직접적으로 제어함
- (중요) 복합 게임 연산자는 연산의 결과와 그 결과에 대해 동시에 진행할 수 있음
- 복합 게임 연산자는 차례대로 접근하며, 이진 연산자에 대해 무시하거나 고려할 필요가 없음

6-3. 후치 증감 연산자 이해
- 후치 증감 연산자는 데이터의 연상 결과를 항상 같게 만드는 연산자를 말함
- 이 경우, 증가나 감소를 후치에 진행할 때 결과가 달라질 수 있음
- (중요) 증가나 감소를 이전에 진행한 후에 수행되는 연산자에 따라 결과가 달라질 수 있음
- 따라서, 후치 증감 연산자의 결과를 위해서는 이전의 증감 연산자의 결과가 중요함

00:00
상업 두번째 짱 절차 0 프로그래밍 언어 같이 공부해 볼 건데요. 쉽게 말하면 시 공부를 하는 겁니다. 시 언어 공부를 같이 할건데요. 및 이 말씀을 드리는데 시 언어를 전혀 모르시는 분 이라고 하며 는 이 강의가 좀 부족할 수 있습니다. 언어 자체를 공부하는 부분이 아니기 때문에 어느정도 언어의 기초가 있는 분들이 준비를 하는 형태라고 보셔야 되요. 이게 정보처리기사 과정이 잖아요. 산업기사 나 기능사 다음 과정이기 때문에 정보처리기능사 에서 이미 언어 3가지를 공부를 하고 시 잡아 파이썬 이여 공부를 하고 넘어와서 기사 공부를 하게 되는 거기 때문에 최대한 쉽게 설명하려고 노력은 하겠지만 아마 좀 부족한 부분이 있을 수 있습니다. 그래서 별도의 시 언어 기초강의 가 좀 필요하실 수도 있어요. 전공이 이쪽이 아니 시거나 처음 드시는 분들은 아마 좀 어려울 수 있습니다. 위 이 말씀을 드리는 거고 최대한 질문게시판을 많이 이용해 주시길 바랄게요.

01:01
자 보겠습니다. 첫번째 섹션으로 데이터가 국민이 입출력 기능이 있습니다. 가장 기초적인 것부터 공부를 한다고 보시면 해요. 첫 번째 포인트의 자료형 입니다. 일단 시험의 특징 2축 나와 있죠. 일단 c 언어는 어느 정도 알고 계시는 분들도 좀 실수 할 수 있는 부분도 있고 하니까? 꼼꼼함이 좀 짚고 넘어가도록 할 텐데 일단 시 언어의 특징 고급 언어의 장점과 정크 버너에 장점을 모두 갖춘 구조적 프로그래밍 언어다. 이식성이 뛰어나고 효율적이다. 다양한 연산자 및 기능 염색 기능을 포인터 같은걸 이야기하는 겁니다. 포인터 이런것들을 제공하기 때문에 프로그램 개발에 제한은 거의 없다고 되어 있구요. 언어 기본 작성 규칙 나와 있죠. 모든 제 1심을 대부분 구성이 되는데요. 4인 하면 수가 이제 시장 이구요. 함선 n 블록 구조로 점이 되어 있다. 라고 되어 있죠. 중 괄호로 감싸져 있는 코드 영역을 블럭 이라고 표현합니다.

02:01
연 문제의 경우 대 소문자를 엄격하게 9품 한다고 되어 있구요. 모든 명령문은 세미콜론 으로 마무리 된다고 되어 있어요. 자 그 다음 기본 라이브러리 사용을 위해서 전처리기 를 사용하구요. 이거 뭔지 있다. 흘러 할게요. 호리에 대한 설명이 필요한 경우에는 주석 이라는걸 활용할 수 있다. 라고 되어 있습니다. 자 요게 가장 기본적인 틀이 구요. 항시 하나씩 보도록 하죠. 두번째 악몽으로 는 상수의 표현 이라고 되어 있습니다. 상수 라는 것은 정해진 값을 의미하는데요. 보통 우리가 이제 프로그래밍 공부 할때 수 라는 단어가 나오면 그건 갑시다. 이렇게 생각하시면 됩니다. 베리류 요. 자 그래서 상수는 항상 정해진 값이 란 뜻이에요. 자 그런데 그 가치가 정해진 부분을 어떻게 표현할지 에 따라서 조금 좀 달라 지잖아요. 우리가 우리가 돈이 하는 걸 봤을 때 우리나라로 따지면 천원 이천원 이렇게 하는거지만 다른 나라 를 기준으로 봤을때는 뭐 엔화 도 있고 달러 딛고 여러가지로 표현을 할 수가 있죠.

03:01
그런 부분 이라고 보시면 되요. 자 그래서 정수형 데이터를 표현하는 방법 이렇게 생각하시면 됩니다. 자 그래서 10진수를 표현할 때는 보통 방식으로 우리가 쓰는 방식으로 표현을 하면 됩니다. 12 라던지 이런 식으로 표현을 하면 되구요. 만약에 이 데이터를 팔찌 인수로 표현을 하고 싶다. 라고 하면 숫자 앞에 0을 붙이시면 되요. 그러면 컴퓨터가 얘가 지금 8 진수로서 꾸나 라는걸 알 수가 있다는 뜻이죠. 이해 되시나요. 자 그래서 지금 보면 여기 023 써 있잖아요. 만약에 그냥 이 삶이 라고 써있으면 은 이거는 10진수 23 이라고 인식을 해요. 자 그런데 여기 앞에 0 을 붙이게 되면 은 이거는 8진수 이 삶이라고 인식을 한다는 뜻입니다. 어떤 느낌인지 아시겠죠. 자 그리고 16g 인생을 표현할 때는 0x 를 붙입니다. 자 그래서 0x 를 붙이게 되면 이 뒤쪽에 있는 것들은 다. 16진수 라고 인식을 한다는 거죠. 참고로 16진수 는 1 2 3 4 5 6 7 8 9

04:02
0 a 부터 f 까지 높여 늘 합니다. 자산과 네이버 라든지 검색을 해보시면 은 충분히 알 수 있는 부분이고 사실 우리가 16 신선을 뭔지 배우긴 했어요. 그쵸 넘어가도록 할게요. 다음으로는 실수를 표현하는 방법이 나와 있는데 이게 수학적인 개념의 실수가 아닙니다. 그러니까? 리얼 연봉 아니라 플로팅 포인트 더 뭐 라는 뜻인데 부동소수점 이란 뜻이에요. 쉽게 표현해서 프로그래밍 언어에서의 실수는 소수점이 부터 이 땅 안 붙어 있다는 아니에요. 그래서 소수점 에 붙어 있으면 무조건 실수 다. 이렇게 생각하시면 됩니다. 가려 o 와 5.0 의 차인 거죠. 5.0 1.02 붙였기 때문에 실제로 실수 로 판단합니다. 하지만 이 오는 소수점이 없죠. 그렇기 때문에 정수로 판단해요. 컴퓨터와 그렇게 판단을 한다는 얘기에요. 이렇게 생각해 주시면 됩니다. 3 그래서 3.1 사이로 0 - 0.4

05:01
하고 12.0 이런 것들은 다. 실수 다. 이렇게 판단을 하시면 되겠다. 는 거죠. 자 그 다음에 이걸 지실 표현을 할 수 있습니다. 실제로 문제 나오진 않지만 어쨌든 문자 이를 포함해서 10 의 n 제곱을 편할 수 있어요. 예를 들어서 12 하고 2 3 이렇게 써 있다고 하면 이것은 11세 제곱을 곱한 뜻이에요. 취미 곱하기 이렇게 편하게 딴 뜻이죠. 요게 지수 표현이다. 이렇게 알고 계시면 되겠습니다. 제가 방금 실수가 서로 다르다. 라고 얘기했던 거 여기 제가 적어 놓았죠. 라고 참고 하시면 될 것 같구요. 다음 문자형 상수 문자는 표현한 상수를 얘기하는 건데요. 문자형 상수는 작은따옴표 로 감싸서 표를 해야 대형 예를 들어서 내가 a 라는 문제를 편하고 싶어요. 그러면 작은 따옴표를 이렇게 해서 표현을 해야 되는 뜻입니다. 그리고 각 문제는 특정 코드 값으로 구성된다고 되어 있어요. 그러니까? a 라고 이렇게 샀다고 하면 실제로는

06:01
a 가 저장되는 게 아니라 에 이런 뜻하는 특정 코드 값이 저장되는 뜻이에요. 예를 들면 뭐 63 이라든지 54 라든지 이런 형태의 값으로 저장이 됩니다. 실제 거는 그래서 실제 저장되는 값 센 수 기 때문에 더하거나 빼는 연산 도 가능하다고 되어 있어요. 무슨 얘기냐 문자 a 에 1을 더하면 그 결과는 비에 요. 이게 왜 가능하냐 이해가 가지고 있는 코드 값이 따로 있기 때문이에요. 그러면 b 가 가지는 코드 값도 * 좀 있겠죠. 그 코드 값이 a 와 1 차이밖에 나지 않습니다. 그렇기 때문에 a 에다가 1을 더하면 비가 실력이 되는 거죠. 이 듯이 점 차 그다음 문자열은 큰따옴표 로 감싸서 표현을 해야 되구요. 문자와 문자열은 서로 다릅니다. 이고 판단을 잘 해주셔야 되요. 자 그래서 큰따옴표 로 표현을 하는 얘긴데 이렇게 표를 하는 거죠. 자 그런데 만약 이에 큰 따옴표로

07:02
표현했는데 여기에 a 한글자만 썼어요. 그러면 그렇다고 이게 문자가 되냐 문자열이 애용 이 큰 따옴표로 감싸져 있는 애들은 한글 자들은 죽을 자는 무조건 문자열로 인식을 합니다. 그렇기 때문에 문자열 a 에다가 일을 더 하는건 내가 원하는 기대 값이 나오지 않을 거에요. 선호 9분을 할 수 있어야 됩니다. 넘어갈게요. 사람으로 변수 선언 규칙이 이거 문제 나옵니다. 그리고 실제 코딩을 할 때도 여러분들이 항상 지켜야 되는 부분이기 때문에 외우세요. 반드시 외우고 계셔야 됩니다. 다음으로 변수를 명명할 때 헝가리안 표기법 이라는 것을 때가 있었어요. 옛날에는 이건 뭐냐면 함수나 변수의 이름 앞에 데이터 타입을 명시하는 거에요. 예를 들어서 우리가 아직 안되었지만 정수 라는 타입이 있습니다. int 란이 있어요. 예를 들어서

08:01
인 트 하고 ag 이런식으로 변수명을 만드는 겁니다. 그러면 ag 라는 편수는 인체 형 라는게 바로 눈에 보이죠. 정수영 이라는 게 보이죠. 이런 것들 때문에 헝가리안 표기법 이라는것을 사용했었어요. 그래서 데이터 타입을 변수명 해서 바로 추정이 가능하구요. 충돌도 방지할 수가 있는데 데이터 타임이 바뀌게 되면 나중에 전체 변수명을 이미자 변경을 해야 되요. 그리고 변수의 이름을 기억하기가 어렵죠. 어쨌든 좀 기니까? 요. 자 그래서 옛날에는 이 통합 개발 환경이 부실 했기 때문에 이 규칙이 굉장히 유용해 있지만 지금은 사용하지 말 것을 권고하고 있다. 고 되어 있습니다. 요. 정도 까지 보고 넘어가죠. 변수 명명 규칙을 봤으니까? 실제로 변수를 정의 해 봐야겠죠. 변수가 뭔지를 먼저 보겠습니다. 여러분들 변수 라는 말 많이 들어봤을 거에요. 변수가 뭔지 설명하는게 생각보다. 어려워요. 같이 한번 보도록 할게요.

09:00
데이터를 저장하는 공간 또는 그 공간에 저장된 값 자체를 의미한다. 고 되어 있습니다. 데이터를 저장하는 공간 또는 그 저장된 공간 안에 있는 값 이렇게 보시면 됩니다. 이거는 우리가 실제로 근데 많이 보는 개념 이에요. 예를 들어서 콜라는 뭐 생각해보면 캔 콜라 같은거 있죠. 콜라는 생각해보면 우리가 콜라를 사 온다고 하면 콜라가 잠겨있는 채널 4 오는 거잖아요. 이걸 우리가 별도로 콜라가 담겨있는 캔 콜라를 사 와 아니면 콜라 캔 은사와 이렇게 얘기 하지 않죠. 보통 요. 콜라 캔과 여기 안에 있는 내용물을 일단 하나로 콜라 라는 걸로 명칭을 하는 것처럼 변수도 상황에 따라서 공간이나 값을 별도로 의미하는 경우가 생겨요. 그래서 두 가지를 다. 변수라고 한다. 이렇게 보시면 되겠습니다. 자 어쨌든 그래서 공간이라는 개념이 있기 때문에 이 공간에 값을 저장할

10:02
수가 있게 되는데 그걸 할당 이라고 합니다. 그리고 모든 변수는 사용전에 사용 전 이런 얘기는 이 변수라는 공간을 사용하기 전에는 뜻이에요. 여기 안에 최초 한번은 뭔가를 집어 넣어야 되는 뜻이에요. 그걸 초기화 라고 합니다. 05 일단 알고 계시면 되고 하구요. 자 변수 선언 하는 방법 이제 메타 언어 가 굉장히 많이 나올 거에요. 변수 선언시 변수명 앞에 필요한 형태의 자료형을 입력해야 된다고 써 있어요. 아까? 제가 미기 했던 부분이죠. 인체 해인 이런식으로 선언을 해야 되는 뜻이에요. 자 그러면 a 라는 변수를 만들 건데 이후에 이는 정수영 입니다. 이 뜻이에요. 부분이 어렵지 않죠. 자료형이 인테 만 있는 게 아니라 굉장히 다양하게 있겠죠. 공간의 데이터를 저장하는 공간 모였어요. 변수 였죠. 변수가 꼭 아니더라도 데이터를 저장하는 공간의 크기와 형태를

11:01
결정하는 게 자유 형이에요. 영어로는 데이터 타입이죠. 젖량이 생성하는 메모리의 크기는 컴퓨터 시스템에 따라 달라질 수 있어요. 그렇기 때문에 문제의 2 크기 자체가 나오는 경우는 거의 없을 거에요. 그러면 이 표에서 집중적으로 봐야 되는 부분은 이 부분입니다. 정순영 자료형이 이렇게 요렇게 요렇게 요렇게 이딴 뜻이래요. 문자형 자료 영은이 거구요. 실수형 전 유형은 요렇게 있다. 이렇게 보시면 됩니다. 그리고 여기 위에 예약을 하고서 있죠. 앞에서 잠깐 봤던 내용인데 예약어 는 컴퓨터가 사용하기 위해서 미리 치고는 단어 드린 거예요. 이 단어들은 우리가 변수명을 지정하거나 여러 가지 이름을 지정할 때 사용하게 못하는 미리 예약된 단어들이 에요. 이렇게 알고 계시면 됩니다. 자 그리고 여기서 조금 주의해야 될 부분이 있는데 문자 형이에요. 이 문자형 은 정수 형의 포함됩니다. 아까도 말씀드렸듯이

12:00
문자는 각각 코드가 지정되어 있다고 했죠. 그런데 그 코드가 다. 정수형 이에요. 그렇기 때문에 문자 형은 정수영 이라고 볼 수도 있습니다. 요고 주의해 주셔야 되요. 다음 코드를 보도록 할게요. 앞으로는 코드를 조금 더 집중해서 공부를 하실 필요가 있어요. 예시 입니다. 해석이 되냐 안되냐 를 보시면 됩니다. 정수형 변수 무 스코어를 생성합니다. 인이 스코어에 7시 미라는 10진수 싶진 점수를 할당을 합니다. 란 뜻이에요. 2등 5가 스코어가 7 10과 같다. 라고 되어 있는게 아니에요. 의미는 비슷하지만 명확하게 보자면 다르다고 봐야 됩니다. 스코어가 78 갔다가 아니라 스코어 라는 변수로 공간에 70 이라는 값을 할당 하는 거에요. 이렇게 보셔야 되구요. 자 그 다음에 여기서 법을 실형이 줘 실수형 변설 그랭 이들을 생성하면서 동시에 3.8 년은 값을

13:01
할까? 하는 거에요. u 할당은 좀 자 지금 현재 초기화 줘 처음 집어넣고 있기 때문에 자 그래서 이렇게 두 줄에 걸쳐서 생성하고 할당 할 수 있구요. 그냥 한줄 안에다. 생성과 동시에 할당을 할 수도 있다. 이렇게 보시면 됩니다. 제어 코드 봄에는 이게 지금 메인 함수 를 의미 하는 거구요. 메인 함수에 블록이 여기서부터 여기까지 다. 라고 되어 있는 겁니다. 그리고 이 위쪽에 있는 요놈이 전처 링 이에요. 성창 익 전처리기 는 원시 코드 친구에게 적고 있는 코드가 원시 코드 입니다. 원시 코드를 목적 프로그램으로 목적 코드 5 변경하기 전에 뭔가 별도로 작업해야 되는 내용을 적는 곳이에요. 자 그러면 샤린 커 누드 가 뭔지를 알아야 되는데 일단 지금은 이게 전처리기 다. 정도만 알고 계시면

14:00
되구요. 전천 인기가 먼지는 다음에 설명할 기회가 있을 거에요. 일단은 그래서 여기까지가 코드의 시장 이고요. 여기까지가 코드의 종료 프로그램의 시작과 종료 다. 이렇게 알고 계시면 됩니다. 아시겠죠. 에 일단은 그래서 앞으로는 u 안쪽에 있는 중간을 안쪽에 있는 내용만 분석을 해 보도록 할 거에요. 사랑으로 이스케이프 시퀀스 서식 문제를 볼 건데요. 허 식 문 자리라는 것은 기존 문자 외에 별도의 기능을 가지는 확장 문자 연 이에요. 문자열 안에서 역습 4시 문자의 형체로 편 한다고 되어 있는데 아래쪽에 종류가 나와 있죠. 그러니까? 우리가 문자를 쭉 나를 했을 때 문제를 봤을 때 역습 메시가 보이는 순간 컴퓨터는 아 내가 문자를 인식하는 것 말고 별도로 이런 일을 해야 되는 구나 라고 판단을 한다는 뜻이에요. 그래서 그 다음 문제를 보고 앤을 보면 앤 을 출력하는 게 아니라

15:01
엔터를 쳐 주는 거죠. 어떤 느낌인지 아시겠죠. 그렇게 접근을 하시면 되겠습니다. 이것도 코드가 있겠죠. 이번에는 서식 지정 저예요. 서식지 정자는 메모리에 저장되어 있는 데이터를 원하는 형식으로 변환해서 출력한다. 라고 되어 있습니다. 문자를 안해서 이런식의 형태로 표현이 된다. 고 되어 있습니다. 무슨 의미냐 예를 들면 은 실제로 어떤 공간에 변수 라고 생각해 보며 어떤 공간에 10 이라는 값이 저장되어 있다고 생각해 볼게요. 사실은 22 라는 값이 이렇게 조장이 되어 있는게 아니라 이진수 의 형태로 변환해서 저장이 됩니다. 컴퓨터 안에 있는 모든 데이터는 다. 이진수 에요. 무조건 다. 영상이 된 음악이 된 이런 숫자 된 무조건 2진수로 변환 해서 저장이 되어야 돼요. 이제 수밖에 다를 줄 몰라요. 기계는 책은 어쨌든 20을 저장 했어요. 굉장히 계 12 아니라 실제로는 여기에 00일 작 챙 게 막 써 있는

16:01
2진수로 저장이 된다는 거죠. 자 그럼 여기 안에 있는 데이터를 다시 출력을 하고 싶을 때 이희진 수를 출력하는 게 아니라 보통 우리가 원하는 10진수 라든지 다른 형태로 바꿔 줄 필요가 있단 말이죠. 자 그래서 우리가 서식 지정 자 허 cm 외 뒤를 입력하게 되면 얘를 10진수로 변환 해서 출력을 한다는 뜻이에요. 근데 만약에 허생 체온을 입력하게 되면 10진수 였더니 요놈을 8진수 너 변환 에서 출력을 하겠다는 뜻이 되는 거죠. 이런 식입니다. 저장을 할 때도 마찬가지지만 이 저장되어 있는 걸 다시 변환해서 내가 원하는 형태로 변환을 할 수 있다. 6 이념이 포인트라고 보시면 되요. 새 그 다음에 여기 봄에는 옵션 이라고 되어 있는 부분이 있는데 여기에는 체험이 옵션이 없어요. 허 센트와 문자만 있는 거거든요. 요. 사이에 요. 안에 있는 옵션을 지정할 수 있다. 고 되어 있습니다.

17:01
자 그래서 일단 자연수를 먼저 이야기해 보자면 퍼진 채 뒤 쓰는건데 퍼센트 예를 들어서 5 뒤 이렇게 쓸 수 있단 얘기 거든요. 자연수를 자 이렇게 되면 어떻게 된 거냐면 이 숫자를 표현할 때 최대 다섯 칸 을 확보한 상태에서 표를 합니다. 예를 들면 요게 글자를 표현할 수 있는 공간 이라고 했을 때 뭐 27 뒤 라고 했을 때 원래는 그냥 p d 라고 하면 27일 이렇게 써 저요. 이렇게 자 그런데 od 라고 쓴 경우에는 총 다섯 칸 이니까? 앞에 한칸 두칸 세칸 에 빈칸을 주고 나서 27 이렇게 써 진단 뜻입니다. 이해 되시죠. 이렇게 되어 있는 거구요. 그 다음에 만약에 여백을 0으로 채운다. 고 되어있죠. 이런 거죠. 퍼센트 1 0 o 키 이런 느끼는거 에 계약을 하면 5칸 을

18:00
확보하는 것도 맞고요. 오른쪽에 붙여서 이렇게 나타내는 것도 맞는데 이렇게 비어있는 공간을 그냥 비우지 않고 0 월 채우겠다는 소리가 내 미라 그래서 009 이치를 이렇게 되는 거죠. 자 요런 느낌 이라고 보시면 되요. 옵션 이라는걸 그리고 이 부분 좀 실시할 수 있는 부분이라서 이야기를 다시 해보면 어여 - 같은 경우에는 - od 이렇게 쓰는 게 없네요. 이렇게 하게되면 요. 27일 올려 오른쪽 끝에 붙어 있어야 되는데 왼쪽 끝으로 붙어요. 왼쪽 정렬이 된다는 소리죠. 자 그래서 이건 차라리 그렇게 어렵지 않은 내용인데 중요한 건 플러스 입니다. 만약에 플러스 라고 서슬 경우에요. 플러스 넘어서게 되면 은 숫자 앞에 부호 를 삽입한다. 고 내용이 있습니다. 자 그럼 어떻게 3 입을 하냐면 총 다섯 칸 이잖아요. 어찌됐건 표현을 5 칼 아니다. 해 줘야 되거든요. 자 그러면 숫자 앞에 부호 를 선택합니다. 플러스 마이너스 이런 것들을 그리고

19:01
27 은 영어다. 적겠죠. 그리고 빈칸이 존재 할 거에요. 이런식으로 되는 겁니다. 영희의 플러스 라고 섰다고 해서 플러스 가 정한 게 아니에요. 만약에 데이터가 이렇게 - 27 이 면은 이 상태로 그대로 적용해도 2부 어가 - 갔어 질 거에요. 아시겠죠. 이건 식으로 표현을 할 수 있다라는 겁니다. 실제 이렇게 복잡하게 표현을 하지는 않을 거에요. 어쨌든 어쨌든 데이터는 간단하게 편하게 될거고 실제 웅크 데이터를 내기 위한 과정이 보통은 문제로 나오기 때문에 가볍게 보고 넘어가시면 되겠습니다. 다음으로 표준 입출력 함수 로 보통 우리가 표준이라는 것은 우리가 쓰는 일반적인 환경을 이야기하는 거죠. 자 그래서 표준 입력 이라고 하면 우리가 보통 키보드 입력을 하니까? 키보드를 통해서 입력 받는걸 표준 입력 이라고 하구요. 그 다음에 출력 데이터는 보는게 우리가 일반적으로 모니터를 뭐죠. 그렇기 때문에 모니터를 통해서 출력하는 거 이거 를 표준 출력 이라고 합니다. 그래서

20:01
키보드로 입력 받고 모니터로 출력할 수 있는 함수들이 라고 생각하시면 되요. 그래서 이번에는 외워 주시는게 좋겠죠. 재치 char 은 문 짤 하나 를 입력받는 하세요. 그래서 박리 변수가 필요했죠. 입력을 받으면 그 받은 값이 저장될 공간이 필요할 테니까요. 자 그래서 변수 하나 생성 하구요. 그 다음에 그 변수에 이 함수의 결과 깜 이 거죠. 문자 하나를 할당해 주는 그런 형태입니다. 문제 하나에요. 문장 연예인이고 다음으로는 갯 겠읍니다. 켓 s 는 키보드로 부터 문자가 열을 입력받는 함수에 요. 문자열을 입력받을 수 있어야 되기 때문에 문자열을 저장할 수 있는 공간이 필요한데 문자열을 저장할 수 있는 공간이 문자 배열이 에요. 일단 지금은 그렇게만 알고 계시면 됩니다. 그래서 아까처럼 변수를 생성할 때 그냥 c 1 끝내는게 아니라 여기에 10 개 라는 의미에 코드를 적습니다.

21:03
이렇게 하게되면 문자열 개를 저장할 수 있는 배열이 만들어지는 거에요. 일단은 그렇구나 정도만 생각하세요. 자 그래놓고 켓 sc 라고 쓰면 된다는 거죠. 형식을 잘 보셔야 되요. 위쪽에 보시면 얘는 씨는 갯 ghar 이렇게 써 있었잖아요. 자 그런데 과로에 나무도 없었구요. 그런데 얘는 켓 s 해놓고 바로 에 c 를 넣었어요. 씨눈 으로 시작하는 게 아니죠. 자 요. 부분은 차이가 있습니다. 이런 부분을 잘 체크해 주셔야 되요. 향으로 세번째로는 스캔 f 있습니다. 서식 문자열이 나와 있죠. 지정은 서식 을 기반으로 변환해서 저장하는 함수 라고 되어있습니다. 코드를 보면 됩니다. 일단은 값을 2개를 입력 받을 거예요. 그래서 변수를 각각 선언을 해 놨습니다. 그래놓고 스캔 해법을 시작되죠. 스케이트를 보시면은 첫 번째 서신 문자열이 존재합니다. 서식 문제의 봄에는 두 가지의 허식 문제가

22:00
존재하죠. 서식 문자를 해석할 때는 간단하게 빈칸 이라고 생각하시면 되요. 그래서 허식 문제를 지금 어떻게 구성이 되어 있냐 빈칸 하나와 띄어쓰기 그리고 또 빈칸 1 이렇게 되어 있다고 보시면 됩니다. 그런데 이 첫번째 빈칸에는 실수 데이터를 저장을 해야 되는 빈칸이 뭐 구요. 그 다음에 두 번째 내 l 낸 문자 행위 편을 저장을 해야 된다. 이렇게 생각하시면 됩니다. 자 그래서 시뮬레이션 해 보자면 사용자가 3.55 뛰고 oa 이렇게 입력을 했을 경우에 이 3.5 를 실수 로 인식해서 일로 집어넣기 다는 거에요. 그리고 용 a 는 다른 게 아니라 문자로 인식해서 여기로 집어 넣겠다는 거죠. 이게 2서식 문제를 역할입니다. 자 그러면 현재 빈칸 2개에 각각 3.5 와 a 가

23:01
들어갔죠. 그럼 이 각각의 데이터를 어디로 보면 야 여기 로 보내는 거에요. 그래서 스코어 라는 변수와 그레이드 라는 변수에 할당을 한다. 라는 건데요. 여기서의 핵심은 이겁니다. 이거요. & 연산자가 하나씩 붙어 이래요. 스캔 앱의 특징 입니다. 이것은 암기를 하셔야 되요. 이중에서 할당을 하거나 초기화를 할 때는 nd 언제가 없었어요. 자 그런데 스캔 f 에서는 & 연산자가 있습니다. 이번 주의하셔야 되요. 이게 뭔지는 아래쪽에 배우시면서 점점점 아시게 될 거에요. 자 요즘도 보며 넘어갈게요. 다음은 출력 함수 입니다. 문제 하나를 출력하는 방법 문짝 열을 출력하는 방법 그리고 서식 을 기반으로 변환해서 모니터를 출력하는 방법 마찬가지 3가지가 있습니다. 어렵지 않습니다. 코드를 보시면 되요. 문자의 스가 변수 시에 저장이

24:00
되었어요. c 가 생성되면서 초기화가 되는 거죠. 이 상태에서 오겠습니다. 여 씨의 는 현재 s 라는 문자가 저장이 되어 있으니까요. 푸 cher c 라고 하면 여기 안에 들어있는 s 라는 문자가 출력이 되는 거에요. 그리고 변수를 꼭 쓰지 않고 여기 아내의 문자를 직접 입력할 수도 있습니다. 고정도 역이 아닌 어제 땐 문자가 저장되어 있는 변수나 아니면 진짜 문자나 이런 것들을 집어 넣어 주면 된다는 거죠. 그게 이 표현입니다. 자 풀 s 문자에는 그러면 문자열이 저장되어 있는 곳이나 실제 문짝 를 출력하면 되겠죠. 자 그래서 아까처럼 문자 배열을 생성하고 문자열로 초기화를 합니다. 자 그래놓고 문 자연이 저장되어 있는 해외 명을 적었죠. 배열 명을 접을때 이재관 오후 시 분 안 적었어요. 이것도 주의하셔야 됩니다. 배 열 명만 쓴 거에요. 변수명 말씀 것처럼요.

25:02
책을 내놓고 실제로 문자를 그냥 직접 출력을 할 수 있다. 이렇게 보시면 되겠습니다. 다음으로 코멘트 예쁘네요. 마찬가지입니다. 서식 문제이죠. 서식 문자열 핵심 해요. 자 그런데 프린트 f 는 서식 문자 열애 내가 출력하고 싶은 형태의 문자열 형식 을 만들 수가 있기 때문에 조금 더 복잡할 수 있어요. 자 보겠습니다. 이렇게 나와 있죠. 제가 아까? 제가 말씀드렸듯이 서식 문자는 빈 칸이 있다고 생각하시면 됩니다. 자 그러면 결국에 여기서 하고 싶은 부분은 이런식 뭐예요. 점수는 탱탱 등등등등 저럼 그 다음에 여기 역습 4시 애니죠. 이거는 한주를 매력 않다는 소리입니다. 2.1 이따가 다시 한번 설명 할게요. 점은 행정 딩딩 싱 입니다. 이렇게 써 있는 거랑 똑같다고 보시면

26:01
됩니다. 잘 옆에 놓고 볼게요. 물론 결과가 나와 있지만 이런 식으로 일단 틀을 잡아 놓는 다는 거에요. 점수는 하고 서식 문자가 나와 있어요. 그러니까? 내 모 점 그 다음에 학점은 퍼센트 신점 내 모입니다. 이런 형태로 출력하고 싶구나 라는 게 일단은 인지가 돼야 돼요. 자 그러면 각각 이 공간이 공감 에다가 출력하고 싶은 데이터가 이 뒤쪽의 애착을 괴물 적혀 있어야 되요. 그러니까? 4.2 는 1 우정 하구요. 그 다음에 문자 이는 일로부터 할 거에요. 현재 기 상태입니다. 자 그러면 들어갈 때 어떻게 변환 되서 들어갈 건지를 애가 정하는 겁니다. 2.1 f 는 여기선 있죠. 데이터를 소수점 이하 1 자연이 까지 가지는 7 신원 표현을 한다고 되어 있어요. 실제로 지금은 4.2 지만 4.2 삽입할 뭐 이렇게 써 있을 수 있잖아

27:00
3.0 에서 이루고 이런식으로 서 있을 수 있죠. 그 데이터를 소숫점 이하 한자리 까지만 표현을 하겠다. 라는 의미가 됩니다. 때 그 다음 경험 역시 / 애니 에요. 이거 이스케이프 시퀀스 였죠. 역습 내심을 만나면 언젠가 다른 걸 해야 되는구나 문제 출력 말고 작은 걸 해야 되는구나 인식을 하게 되구요. 그다음 문자 애널 보면 아내가 엔터를 쳐 줘야 되는구나 줄바꿈을 해결 되는구나 이렇게 인지를 한다는 거죠. 여기서 이 부분에서 개발자가 직접 엔터를 치시면 한데요. 엔터를 치게 끝 명령을 내리는 거죠. 이렇게 하고 퍼센트 시는 문자로 표현한 형태에요. 어두운 느낌이 아시겠죠. 그래서 여기에 4.2 가 들어가는 거야 이 공간에 애니가 들어가는 거죠. 자 여기서 중요한 포인트가 두가지가 있습니다. 제가 여기 적지 않았는데요. 기초 중의 기초 기 때문에 한 번만 짚고 넘어갈게요. 만약에 점 일이 없었다면 그러니까? 퍼센트 점 이를 nf 가 아니라 그냥 퍼센트 lf 였다면 어떻게 됐을까? 같다는 거죠. 실제로

28:01
출력을 이렇게 될 거에요. 이 공간에 4.2 0 0 0 0 0 이렇게 표현 될 겁니다. 기본적으로 6자 니가 편히 되요. 그러니까? 점 이런 이 부분에 닿아 날려준 거다. 이렇게 생각하시면 되겠죠. 그리고 문자를 출력할 때에 문자를 표현할 때는 작은 따옴표가 들어가지만 실제로 출력을 할 때는 작은 따옴표를 출력되지 않습니다. 그렇죠. 그렇기 때문에 만약에 내가 작은 따옴표 까지 출력을 하고 싶다. 라고 하면 서식 문자열 내에 작은 따옴표가 들어가 있어야 되는 거에요. 그래야 영희의 작은 따옴표가 들어가겠죠. 자 요런식으로 서식 문자열 프림 테이프를 사용할 수 있다. 정도 한번 봤습니다. 앞에서도 잠깐 얘기를 했었지만 실제로 이렇게 복잡하게 고민을 하거나 그렇지 않을 정도로 간단하게 나올겁니다. 가볍게 봐주시면 되요. 넘어갈게요. 사용 네번째는 연산자 입니다. 연산자가

29:01
뭔지는 아시죠. 더하기 빼기 곱하기 나누기 이런 것들이 연산자의 요. 그 연산자 설명 축 나와 있는 건데 뭐 특별하게 어려운 개념을 아니구요. 연산자의 정의 자체가 중요한 관 연산자 우선순위 입니다. 연산자 종류가 굉장히 많은데 이 각각 이 연산자가 뭐가 먼저 연산이 재는 지를 황을 해주셔야 되요. 자 그래서 쇼가 나와있죠. 이 표를 반드시 암기를 하고 계셔야 됩니다. 대략적으로 이제 암기를 할 수 있는 팁을 제가 위에 적어 놨어요. 일반적인 산술 또는 비교 연산 이런 것들은 우측방향으로 진행 됩니다. 이게 무슨 뜻이냐면 2 + 3 + 4 라고 하면 애가 먼저 계상이 된단 소리에요. 그리고 나서 이 결과와 애가 계산이 된다. 이렇게 보시면 됩니다. 가장 먼저 과로와 4 연산이 우선 되구요. 우리가 알고 있는 개념이죠. 다낭 연산 부터 하고 2항 연상의 순으로 진행된다. 고 되어 있어요.

30:00
이것도 예시를 한번 제가 들어 드리면 곰방 이해가 되실 거에요. 예를 들면 이 저항이 삶을 생각해 보세요. 그러면 이 덕에 3월 하겠죠. 여성적 하나 밖에 없으니까요. 단항 연산자는 뭐냐면 우리가 흔히 - 기 이렇게 할 수 있는 것들이죠. - 2+3 이런 식이죠. 자 그럼 에 현재 이 플러스는 2학년 상 이에요. 왼쪽에 있는 - 이유와 오른쪽에 있는 삶 을 더 해야 되잖아요. 자 그런데 이 쪽에 있는 2호 - 는 - 할 때에 - 가 아니기 때문에 얘는 요. 이라는 값을 음수 화 시켜 주는 단항 연산자의 요. 그렇기 때문에 다낭 연산을 먼저 수행을 해야 된다는 소립니다. 자 그러면 실제로 계산 단계가 어디든지 디테일하게 보자고 하면 이렇습니다. 이라는 값을 단항 연산자 가 - 로 만들어줍니다. 이게 첫번째 요. 그리고 - 이를 삶과 더하는 거죠.

31:01
우선 님이 아시겠죠. - 가 붙었다고 해서 무조건 이렇게 가 같은 해 다. 라고 보시면 되요. 한모금 이라고 보시면 됩니다. 숫자 망아 연산자가 붙어 있는 관계의 요. 그렇기 때문에 이해하고 3을 더한 다음에 마이너스로 붙이는게 아니라 이 헤다. - 를 먼저 붙이고 나서 3 을 더하는 형태다. 2 이렇게 판단할 수 있어야 된다는 거죠. 새글이 보면 세 번째 권 당연히 알고 계시는 보고 이렇게까지 확인을 하시면 되겠습니다. 자 그래서 다낭 연상 복합 개입 연장이나 지어졌지만 이것들은 좌측으로 벨아미 된다고 되어 있죠. 그래서 이게 지금 왼쪽으로 회람 된거예요. 그리고 나머진 다. 우측으로 진행 된다는거 알고 2시면 되겠습니다. 꼭 암기 해주시구요. 넘어가서 연산의 결과 와 데이터 타입 요것도 굉장히 중요하고 실수를 많이 하는 부분이기 때문에 한번 짚고 넘어갈게요. 피연산자의 값이 아니라 데이터 타입에 따라 값이 아니라 데이터 타임에 따라

32:00
결과 데이터의 타임이 결정된다고 네 있어요. 이걸 또 예를 한번 들어보죠. 5 + 5 에 결과를 특정 변수에 집어 넣어야 된다고 생각해 볼게요. 오늘 하게 오가며 시점을 거나 12 줘 그러면 22 라는 값이 저장이 되는 거에요. 변신해 그러면 이 공간이 저장이 될 때 아까? 제가 말씀드렸지만 22 라는 값이 그대로 저장 되는게 아니라 2진수로 변환 이 돼야 된다고 했어요. 2진수는 0과 1밖에 없기 때문에 이 0과 1로 10진수 8진수 16진수 뭐 영상 이라든지 어떤 뭐있을까요. 문제라든지 여러가지 표현을 해야 되기 때문에 변환하는 방법이 다릅니다. 8진수 늘 2진수로 바꾸는 방법 10진수를 2진수로 바꾸는 방법이 다. 달라요. 그렇기 때문에 현재 정수를 2진수로 바꿔서 저장을 하게 된다는 거죠. 자 그러면 이 경우도 생각해 보죠. 5 +

33:00
5.7 이에요. 이 결과는 10점 7입니다. 그쵸 10.7 은 실수 기 때문에 당연히 실수가 이진순 변화는 형태로 저장이 될 겁니다. 그렇죠. 자 그러면 이 것은 어떨까요. 5 당의 5000명을 어때요. 5 + o 천명 은 10입니다. 그쵸 우리가 알고 있는 상식 선에서는 그러면 정수가 이진수 널 변환이 되는 거잖아요. 그런데 얘를 10.0 이라고 할 수도 있잖아요. 그러면 10.0 은 실수가 2진수로 변환 이 되어야 되는 거에요. 자 그래서 이 기준을 명확하게 정하는게 위쪽에 있는 얘기입니다. 같은 타입 1 경우에는 같은 타임에 결과 데이터가 도출 때문에요. 칠수 + 실수 나 정수 + 정수는 그냥 말그대로 정순 하실수 결과로 이제 공간을 만들면 되는데 이런 식으로 타임이 다를 경우에는 데이터에 따라서 가게 달라지는 게 아니라 정수와 실수를 더하고 있는 거잖아요. 정수 하실수

34:01
그러면 더 크고 또는 더 정민 한 타임에 연선 제 타입으로 결과가 바뀝니다. 그러니까? 정수와 실수는 당연히 실수가 더 정밀한 손을 편할 수가 있죠. 그렇기 때문에 무조건 결과는 실수를 나와요. 12 안 나온다는 거죠. 무조건 10.0 입니다. 아시겠죠. 이런식으로 항상 서로 다른 데이터 타입을 가지고 있을 때 얘네들이 연산을 하고 나서 나오는 결과가 어떤 타입으로 나오는지 사실 이게 핵심 이란 뜻이에요. 아시겠죠. 자 요걸 염증의 두면서 연산자를 공부를 해 주시면 되겠습니다. 연산자의 종류 제가 연산자 정리 별로 꼭 이렇게 나뉜다. 라는 개념은 아닌데 나눠서 기록 해 놨습니다. 산술 연산자는 크게 볼 게 없겠지만 제가 체크한 부분만 한번 같이 볼게요. 일반적인 사직 영상인데요. 여기에서 이 나누기 란 의미가 약간 달라집니다. 한번 퍼져 5 나누기 이라고 생각해

35:01
볼게요. 우리가 알고 있는 상식적인 결과는 2.5 줘 그렇지만 2.5 가 나오지 않습니다. 왜 그러냐면 얘도 정수 후에도 정수 적 정소 나누기 정수는 정소연 산 정수는 무조건 결과가 정수로 나와야 돼요. 그렇기 때문에 이 점호 가 아니라 2가 나옵니다. * 바로 정수기 때문에요. 그러면 이건 실질적으로는 2.5 나는 정확한 다른 값이 아니라 나누기를 했을 때 나머지 를 제외한 몫의 해 당하죠. 그렇기 때문에 목숨을 구할 때 이런 식으로 표현한다. 라고 보시면 되요. 자 그러면 실제로 정확하게 나누려면 어떻게 해야되냐 5 나는 기 2.0 을 하시면 되요. 그러면 정수 나누기 실수 적 정수와 실수를 비교했을 때 실수가 훨씬 더 정밀 하기 때문에 결과 무역관 칠수 로 나옵니다. 그러니까? 2.5 가 결과 나오죠. 이 참모가 그래서 실제로 나눗셈 결과를 알고

36:00
싶을 때는 실수가 포함되어 있어야 되요. 5.0 나누기 2.0 을 하든 5.0 나누기 2를 하는 이런 식으로 하셔야 된다. 이렇게 보시면 되겠습니다. 자 그래서 목숨을 구할 수가 있고요. 실제 나눗셈 연결관을 구할 수도 있고 그러면 나머지 말 그대로 나머지는 구할 때는 새로운 연산자 나 필요해요. 이렇게 5 허생 챙 이 이렇게 하게 되면 나머지 를 구할 수가 있습니다. 그럼 일이겠죠. 오늘 이론 않은 값이 에 나머지를 구하는 거니까요. 이런식으로 개선이 된다. 라고 알고 계시면 되겠습니다. 여기 이제 1 2개 계산할 때는 없지 않은데 분명 연산자가 포함된 코드 라고 하면 이원선 자가 5기 6기 가 섞여 있을 거에요. 그러면 굉장히 헷갈립니다. 직접 적어 가면서 짚어가면서 단계별로 계산을 하셔야 되요. 반드시 니 다음 걸로 넘어갈게요. 다음은 관계 연선 됩니다. 2 데이터가 큰지 작은지 이상인지 이하 인지 또는 같은지 다른지 비를 보는 겁니다. 자

37:01
같다. 다르다. 할 때 연산자가 우리가 알고 있는 개념은 약간 다르죠. 증오 하나는 안 되는 거예요. 이렇게 되있으면 안됩니다. 이거는 a 라는 공간에 b 를 할당하는 거죠. 대입한다. 고도 편합니다. 그렇기 때문에 이 게 아니에요. 증오를 2개 드신다. 그리고 각 따다. 달때 느낌표가 먼저 오고 증가 5조 이렇게 온다. 라는 거 주의 하셔야 되겠구요. 이 증오 같은경우도 보면은 헷갈리지 있죠. 정우가 먼저 가는 경우가 없어요. 체크를 전해주세요. 등 오랑 뭔가 같이 쓰이는 연산자가 있다라고 하면 증오는 무조건 뒤에 요. 이렇게 보시면은 좀 도움이 되실 거에요. 너 뭐 이렇게 사랑은 논리 연산자 돌 이상의 논리 값을 연산 해서 하나의 논리 값을 구한다. 라고 써 있습니다. 쉽게 편하며 는 논리 값이라는 것은 놀리 식 을 통해서 나올 수 있는 트루아 펄스 참과 거짓이 란 뜻이 0

38:00
예를 들면 변수에 인가 10 이상인지 를 체크한다. 고 생각해 보면 a 의 값에 따라서 얘는 참 이 될 수도 있고 거짓이 될 수도 있어요. 이런걸 그래서 놀리 식 이라고 표현을 하거나 또는 조건 시기라고 변합니다. 자 그러면 요렇게 결과를 낼 수 있는 놀이는 값을 낼 수 있는 조건 시기 두 개가 있을 때 그 두개를 어떻게 연결 하냐에 따라서 결과가 달라져요. 자 용어 줘서 거에요. 자 요렇게 조건 시기 2개가 있는 거에요. air 10 이상인지 체크를 하구요. 비가 10 이상인지 체크를 하는 겁니다. 자 그러면 이 조건식 y 조건식 사이에 애가 붙어 있는 경우 이러면 줄다. 만족을 해야 되요. a 2심 이상 해야 되구요. b 2 10 이상이어야 기능 상황이에요. 만약에 근데 여기에 엔드 가 아니라 이거 파이프라인 입니다.

39:00
파이프라인이 이렇게 중에 들어가 있는 경우에는 애니랑 비중의 졸 중에 하나라도 10 이상이면 ok 란 뜻이에요. 자 이런식으로 10월 구성할 수 있겠다. 이렇게 보시면 되겠습니다. 넘어 갈게요. 이번에는 비츠 논리 연산자 라고 되어있죠. 비츠 논리 연산자는 논리 연 하느라 좀 달라요. 이거는 2개 식인데 얜 1 식이죠. 이진순 b 층 배열을 직접적으로 제어 한다고 되어 있습니다. 이 정도도 할 줄 아셔야 되요. 이젠 서로 바꿔서 각각의 이진수 의 각 자리를 더 하는거예요. 각 자기를 고파 거야 아 예를 들면 요거 한번 해보죠. 정수형 변수 하나를 생성해서 여기에 팔을 집어 넣어 볼게요. 다음에 또 정수형 변수 1 비를 행성 해서 여기에는 4 를 찍어 넣어 볼까요. 괴 상태에서 이걸 했다고 가 생각을 해보죠.

40:00
자 이렇게 되어있으면 경우에 이건 결국에 8 nde 4 와 같이 의미가 됩니다. 자 그러면 실제로 이 계산을 어떻게 해야 되냐면 칼과 자를 일단은 2진수로 바꾸어야 돼요. 오늘 정성 빼고 나면 30주 자리에 2진수로 바꾸는 게 맞는데 30주 자리는 너무 많으니까요. 4자리 정도로 한번 해볼게요. 내전이 2진수를 바꾸게 되면 2 8 같은 경우에는 1000 이구요. 그 다음에 4 같은 경우에는 01 00 이에요. 얘네들을 이렇게 연설을 하겠습니다. 라는 뜻이 되는 겁니다. 자 그러면 어떻게 연산을 하냐면 엔드 연산 이라고 되어있죠. & 는 곱하기 에어 쉽게 말하면 얘네들 타고 팔 겁니다. 그런데 첨 곱하기 100 이 아니고요. 한자리씩 고 팔 거에요. 하편 2장 위치를 약간 이동을 해 볼게요. 자기 상태가 되는 거죠. 그래서 요렇게 요렇게 고 팔 거에요. 그 다음에

41:01
0000 이 되죠. 1 곱하기 영은 0 이니까요. 이렇게 하게되면 실질적으로 개봉할 무엇이죠. 0이죠. 그래서 요. 결과가 0이 되는 겁니다. 실제로 8 과자를 곱해 쓰면 은 32 가 나오는게 맞죠. 하지만 비츠 베어는 연산 할 경우에는 전혀 다른 결과가 나올 수가 있습니다. 요거 생강을 잘 해주셔야 된다. 까지 보시면 될 것 같아요. 나머지는 변함이 어려운 개념이 없어요. 앤데 모아 이런거 다. 알고 계실 테니까? 일단 5 않은 더 하는거구요. 그런데 이진숙 이 때문에 1과 2를 더한다고 해서 이가 되는건 아니구요. 1과 2를 더한 그냥 일입니다. xor 같은 경우에는 서로 값이 다를 때만 1이 나오는 거에요. 그러니까? 결국에 딛을 들어서 애가 x1 이라고 한다면 얘 내가 일이고 얘네가 0이 되는 겁니다. 서로 값이 같으면 0 이에요. 이렇게 선언 값이 다른 경우에만 1이 나옵니다. 뭐 이런 개념이 x 월은

42:00
나머지도 몸 가볍게 보시면 될거 같아요. 여기서 조금 더 설명이 필요한 분들은 질문 게시판을 이용하시는 게 좋을 거 같습니다. 너무 자세하게 설명하면 영상이 너무 길어지기 때문에 하니까? 지나 홈 넘어갈게요. 복합 게임 연산자는 연산의 결과와 그 결과에 대해 입을 동시에 진행할 수 있는 연산 이에요. 그래서 여기 보시면은 요런 느낌이죠. 자 여기서 보니까? a 는 a+ b 라고 해서 조금 헷갈릴 수 있는데 연산자 우선순위를 생각하시면 그렇게 어려움이 4명 이에요. 주모 보다. 플러스가 먼저 연산 됩니다. 그렇기 때문에 일단 얘는 무시 하구요. 얘만 생각하시면 되요. 일단 차례대로 보시는 거에요. 무조건 작은 에서 a+b 를 하면 어떤 결과가 나올 거 아니에요. 그렇죠. 그러면 그 결과를 a 니 집어넣는 겁니다. 그러니까? 애인을 계산에 사용하면서도 다시 또 애인

43:00
에다가 모임 나를 집어 넣는게 가능한가 이렇게 고민하실 게 아니라는 거죠. 상상 단계별로 접근 하셔야 되요. 위치가 마찬가지죠. 그래서 a 와 b 를 먼저 계산합니다. 그러면 어떤 결과가 나오겠죠. 그 결과가 얘기로 들어가는 거에요. 이렇게 차근차근 접근 하시면 되구요. 여기서 중요한 건 계산식이 줘 이걸 짧게 표현할 수 있다는 뜻이에요. 그리고 증오가 항상 뒤쪽에 나오죠. 실수 하지 않게끔 조심하시면 됩니다. 여섯번째 마지막으로 가장 어려운 전체 호치 증감 연산자 를 보겠습니다. 코드를 진행 하기 전이나 진행 한 이후에 데이터를 1 증가시키거나 감소시키는 연산자 4 홈즈는 다음 문장입니다. 해당 데이터의 연상 결과는 전체와 호치 모두 같다. 그러니까? 예를 들어서 아래쪽에 보시면 이제 풀 나와 있죠. a 풀뿌리 있구요. 폴 플레임 가 있어요. 요. 두 연산자는 a 를 1 증가 시킨다는 결과는 같아요. 하지만 이 값이 영향을 받는

44:03
다른 데이터들의 결과는 연산의 단계가 달라지기 때문에 주의를 해야 된다고 되어 있습니다. 자 일단은 검토 조 풀뿌리 고 그냥 플러스가 있죠. 그러면 뭐 부터 개선이 되었네요. 풀 뿔은 다낭 구요. 플러스는 이 향입니다. 그렇기 때문에 단항 연산자 가 먼저 진행이 되어야 됩니다. 옆에다. 크게 적어 볼게요. b 플러스 a 슬프죠. 자 그런데 여기에서 포이 풀이 연상의 먼저 줘야 된다는 거죠. 자 그런데 여기 보면 지금 풀 뿐이나 중 개선되고 있어요. 자 한번 볼게요. 자 풀 뿐 은 이를 증가시킨다는 개념인데요. 포인트가 있습니다. 뿔뿔이 뒤에 있는 후치 증가는 후 치는 화로 하고 나중에 란 뜻이에요.

45:00
얼마나 중인 하면 현재 애가 포함되는 이 시기 다. 끝난 다음 이란 뜻이에요. 이 문장이 다. 해결된 다음에 증가를 해주세요. 란 뜻이 됩니다. 그렇기 때문에 j 아래의 존재 하게 되요. 이 드시나요. 그래서 얘가 먼저 연상이 된건 맞아요. 그 다음에 b 와 a 를 더하는 거에요. 그러면 아직 일이 증가 안 돼 있죠. 나중에 할 거니까요. 그렇기 때문에 b 와 a 에 값이 먼저 계산이 되구요. 그리고 나서 애기 값이 증가 되는 거에요. 그렇기 때문에 결과가 이런 식이라는 거죠. 이해 되시나요. 자 그 다음 아래쪽에 이건 전 치죠. b 플러스 풀 플레이에 요. 촛불 읽는 이건 제 10조 풀 프레이는 일단 먼저인 증가하는 뜻입니다. 그렇기 때문에 먼저 1 증가 시킨 다음에 증가된 a 와 b 를 더한 응 거에요.

46:00
이해 되시죠. 후치 감사도 마찬가지입니다. 그래서 여기서 포인트는 후치가 포인트예요. 여기는 수치 감소 증가 어렵진 않죠. 후치가 포인트인데 후 치는 어떤 느낍니다. 야 중에 라는 의미를 가진다. 이렇게 알고 계시면 은 공부하시는데 조금 더 도움이 되실겁니다. 여기까지가 섹션 1번 내용입니다.

728x90
반응형
posted by 아이윤맨
:
728x90
반응형

https://youtu.be/66i2NZc36WI?si=piBThtpm8IKsLff7

1. 프로그래밍 언어의 선정과 종류

1-1. 프로그래밍 언어의 선정 기준과 언어의 선정 과정
- 프로그래밍 언어는 다양한 종류가 있지만, 수행 환경과 개발자의 경험 등을 고려해 선정됨
- (중요) 언어 선정 시 적정성, 효율성, 이식성, 친밀성, 범용성 등을 기준으로 고려함
- 프로그래밍 언어는 하드웨어의 명령을 수행하는 표기법이며, 이를 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정이 포함됨
- 프로그래밍 언어는 복잡한 기능 구현 시, 기능을 일대일로 연동하여 처리함

1-2. 프로그래밍 언어의 종류와 각각의 특징
- 프로그래밍 언어는 용어의 간결함, 효율성, 포인터 등 다양한 특성을 가짐
- (중요) 고급 언어는 성능이 빠르고 배우기 쉽지만, 저급 언어는 성능이 느리지만, 배우기 쉽고 학습 과정이 단순함
- 객체지향 프로그래밍 언어는 클래스를 중심으로 구성되어 있어, 메모리 관리와 상호 작용이 가능함
- 자바스크립트는 스크립트의 특징과 객체지향 스크립트 언어의 특징을 합친 형태임

1-3. 프로그래밍 언어의 선정 기준과 언어의 선정 과정
- 프로그래밍 언어의 선정 기준은 문제를 풀기 위한 프로그래밍 공부를 위한 기초적인 부분임
- 프로그래밍 언어는 하드웨어를 운영하기 위해 개발되는 프로그램 전체를 의미함
- 프로그래밍 언어는 정확한 문법과 코드를 가지고 있음
- 원시 프로그램을 목적 프로그램으로 번역하는 과정을 언어 번역 프로그램이라 함
- 프로그래밍 언어는 시스템 프로그래밍 언어, 객체지향 프로그래밍 언어, 스크립트 언어 등 다양한 종류를 포함함

2. 프로그래밍 언어와 환경 구성

2-1. 프로그래밍 언어의 종류와 특징
- 프로그래밍 언어는 계산, 데이터 처리, 표현 등의 기능을 제공함
- 대표적인 프로그래밍 언어로 파이썬, 파이브, 파이브 이라는 언어가 있음
- 파이썬은 보안과 성능 면에서 약점을 가지며, 파이브는 파이썬보다 보안이 강함
- (중요) 파이썬과 파이브는 각각 프로그래밍 언어의 보안성과 성능을 중점적으로 고려한 것임
- 이 외에 시스템 프로그래밍 언어인 프로그래밍 시스템도 있음

2-2. 소프트웨어 환경과 프로그래밍 언어
- 소프트웨어 환경은 개발 환경을 구성하는 요소를 포함함
- 소프트웨어 환경은 요구사항 관리 도구, 모델링 도구, 소프트웨어 구현 도구 등을 포함함
- (중요) 소프트웨어 구현 도구는 코딩 외에도 다양한 기능을 포함하고 있음
- 배치 프로그램은 사용자의 상호작용 없이 일련의 작업을 수행하는 기능을 가짐
- 필수 요소는 많은 양의 데이터를 처리하고, 자동화, 문제 해결이 가능해야 함

2-3. 프로그래밍 언어를 선정하고 개발 환경을 구성하는 방법
- (중요) 프로그래밍 언어를 선정하고 개발할 때는 먼저 클라이언트 환경을 구성해야 함
- 이는 서버와 클라이언트 간의 인터랙션을 설정하는 것임
- 개발 환경 구성은 테스트 도구, 문서 관리 도구, 빌드 등의 요소를 포함함
- 배치 프로그램은 필수 요소인 많은 양의 데이터 처리, 자동화, 문제 해결 기능 등을 가짐
- 배치 프로그램은 스프링 프레임워크와 트리거를 분리하여 유연성을 제공하는 오픈 소스가 있음

00:01
자 이제 살 과목입니다. 천천히 시작을 해보도록 하죠. 첫번째인 챕터에 남아 있는 내용은 실제 는 문제의 출제가 되기 보다는 우리가 프로그래밍을 배워야 하기 때문에 프로그램에 대한 기본 지식 정도를 쌓고 들어간다. 맛보기 다. 어느 정도로 생각하고 가볍게 보시면 되겠습니다. 첫번째 섹션으로 프로그램 개발 환경 구성 나와 있습니다. 마지막 섹션 이기도 하죠. 프로그래밍 언어가 뭔지 천천히 보도록 하죠. 첫번째 포인트는 프로그래밍 언어입니다. 일단 프로그램을 개발할 수 있는 언어가 굉장히 많거든요. 다양한데 이 다양한 언어들 충의 어떤걸 선택 을 해야 하는지에 대한 기준이에요. 그래서 난 위도 당연히 봐야 될 거구요. 언어 자체에 나니 돌리게 하는 겁니다. 다음으로 수행 환경 그 다음에 사랑 개발자 의 경험과 지식 등을 고려해서 결정을 해야 된다고 나와 있구요. 이걸 일반적으로 얘기했을 때 적정성 효율성 이식성 친밀성 범용성 이런

01:00
것들을 기준으로 언어를 선정한다. 이렇게 보는 거구요. 아래쪽에 읽어보시면 우리가 처음 보는 단 없으니까? 한번씩 보시면 될 것 같구요. 자 그래서 지금은 프로그램 개발 언어에 선정기준을 봤는데 우리가 프로그래밍 언어가 뭔지를 한번은 짚고 넘어갈 필요가 있어요. 문제의 나와서 가 아니라 문제를 풀기 위해서 프로그래밍을 공부하기 위한 가장 기초적인 부분 이기 때문이에요. 이제 굉장히 간단하지만 굉장히 큰 핵심이 될 수 있습니다. 뭔 보겠습니다. 프로그래밍 언어가 뭐냐 컴퓨터 하드웨어가 명령을 수행하게 끔 지시하는 표기법 문법 구문 이런 것들을 통틀어서 프로그래밍 언어라고 한다. 는 거구요. 우리가 앞에서 영어를 간단하게 이것저것 봤죠. 그것도 다시한번 정의를 내리자면 하드웨어는 컴퓨터는 구성하는 물리적인 기계장치를 이야기 하는거구요. 썸 프트 웨어는 하드웨어를 운영하기 위해 개발되는 프로그램 전체를 이야기하는 겁니다. 프로그래밍은 프로그램을 제작하는

02:01
절차를 얘기 하는거구요. ing 그 붙었죠. 자 그럼 코딩은 뭐냐 우리가 코딩 이야기 많이 됐잖아요. 코딩은 코드를 통해서 프로그램을 작성하는 과정이에요. 그러면 코딩과 프로그래밍은 거의 비슷한 개념이 되겠죠. 하지만 코딩은 정말로 코디를 작성하는 과정 자체만 이야기를 하는 거구요. 프로그래밍 같은 경우에는 그 앗 폐의 설계를 한다던지 아니면 테스트를 한다든지 그런 과정도 다. 포함이 되는 과정입니다. 문제 나오질 않아요. 그냥 개념적으로 이렇게 설명을 드리는 겁니다. 자 그리고 프로그래밍 언어는 정확한 문법과 코드를 가진다고 되어 있어요. 문법과 코드가 뭔지 간략하게 설명해 놓았습니다. 문법은 정확한 형태를 가지는 구문 이구요. 코드는 정확한 의미 체계를 의미합니다. 무슨 얘기냐 하면 예를 들어서 a 01 이라는 코드가 있다고 한다면 이에 2012 의 의미는 딱 하나밖에

03:00
없는 거에요. 일대일로 대응이 되는 거죠. 이런 것들을 코드 라고 표현합니다. 아시죠. 그렇기 때문에 우리가 어떤 기능을 쓰고 싶다. 어떤 기능을 구현하고 싶다. 라고 하면 그 기능을 구현하는 코드는 하나밖에 없는 거죠. 이렇게 생각하시면 됩니다. 물론 복잡해지면 앤 그 코드를 편한 방법이 다양해 지겠지만 일단 n 가장 기초적인 기능을 할 때는 일대일로 연동이 된다. 이렇게 생각하시면 되겠습니다. 자 이렇게 보고 넘어가도록 할게요. 프로그래밍 언어는 처음 그 버너와 고급 언어를 나뉘는데요. 전극과 고급에 차이는 성능이 빠르고 배우기 어려우면 저급 이구요. 배우기 쉽고 성능이 느리면 고급 입니다. 그러니까? 난이도가 낮아서 사람이 배우기 좋으면 고급 언어 거에요. 그래서 여기 인간 친화적 기계 친화적 이렇게 써 있죠. 이렇게 9분을 하실 수 있으시면 되구요. 다음에 언어 번역 프로그램 도 좀 있는데 우리가 프로그래밍 언어를

04:01
통해서 작성한 프로그램 코드를 원시 코드 라고 표현해야 원시 프로그램 이라고도 하구요. 자 그럼 이것을 우리가 이해하는 문법으로 작성을 한국이 때문에 컴퓨터가 이해할 수 있게끔 기계어로 번역을 해 줘야 되는데 그걸 목적 프로그램 이라고 이야기 합니다. 그래서 원시 프로그램을 목적 프로그램으로 번역해 주는 게 언어 번역 프로그램 이하는 이고요. 언어 번역 기 라고도 합니다. 대표적으로 이렇게 3가지가 있다고 되어 있구요. 각각의 특징 2 나와있습니다. 용어까지 체크를 해주시면 되겠습니다. 다음으로 프로그램의 언어의 종류 2 위쪽에 있는 부분은 아직 한번도 출제된 적이 없는 가장 기초적인 부분이구요. 그 아래쪽은 문제가 나온 적이 있습니다. 언어의 종류 c 와 10불 뿐 잡아먹는 쭉 나와 있는데 이거 보다. 사실 설명은 더 길게 할 수 있죠. 그런데 일단 출제된 항목은 기준으로 보자면 요.

05:00
일단 씨는 문법이 간결하고 요. 효율적이고 포인터 라는걸 제공합니다. 이런 기능들 때문에 최근까지 사실 이 최근 좀 오래된 최근 을 얘기하는 건데요. 가장 많이 사용되는 시스템 프로그래밍 언어다. 라고 되어 있죠. 시스템 프로그래밍 언어 란 뜻은 시스템을 프로그래밍할 수 있다. 시스템을 운영할 수 있다는 뜻이에요. 하드웨어를 건드릴 수 있다. 듯이 조 내고 정도 보고요. 쉽을 분은 시 에다가 새로운 개념을 더했다는 의미인데요. 잭 채지 1 기술을 더했다. 정화 팼다. 이렇게 보시면 됩니다. 당연히 c 언어 보다는 상위 호환성을 가지죠. 그런데 기존에 없던 개념을 펑 합을 함으로써 매우 복잡한 규격을 가지게 되었다. 라고 되어 있습니다. 그 다음에 나온 게 객체지향 프로그래밍을 위한 언어 차가 나온 건데요. 잡아내는 클래스 를 중심으로 구성이 되구요. 분산 환경 오는 보안 썽 이런 것들을 지원을 합니다. 그리고

06:01
가비지 컬렉터 를 통해서 메모리 관리를 수행할 수 있다. 욕까지 확인해주시면 됩니다. 넘어갈게요. 다음은 자바스크립트 줘 이 자바의 특징 과 스크립트의 특징을 합친 건데요. 스크립트 라는건 여기서 있어요. 목적 프로그램의 행성 없이 즉시 즉시 그때그때 번역해서 실행하는 언어를 스크립트 라고 합니다. 어쨌든 저의 웹페이지에서 객체지향 스크립트 언어를 구현할 수 있는거예요. 이렇게 보시면 되구요. 쉬운 난이도 라고 되어 있습니다. 그리고 프로토타입을 기반으로 객체 상속 또 가능한 친구에요. 이 부분은 일단은 지금은 이해가 잘 안가 싫 거야 직은 객체지향 이라든지 그런 부분에 대해서 자세하게 배우지 않았기 때문에 뭐 물론 지금 언어를 어느 좀 더 배워 보신 분들이면 감이 오실 거구요. 어쨌든 시험에 나올 수 있는 부분을 핵심적으로 치료 등 거기 때문에 암기는 해주셔야 되요. 보안이나 성능 면에서는 다른 언어 와 비교했을 때 좀 부족한 편이라고 되어 있습니다. 다음으론 파이썬 이에요. 사실 이게

07:01
지금 가장 인기가 많죠. 몸의 구조가 매우 단순 하구요. 배우기 쉽구요. 이 식성도 좋다고 되어 있어요. 다양한 라이브러리를 제공하고 요. 동적 타이핑 을 지원한다고 되어 있습니다. 그리고 객체지향 스크립트 언어 라고 되어 있죠. 동적 타이핑 임원진은 아래쪽에 나와 있으니까요. 일단 읽어 보시고요. 이게 뭔지는 실제 파이썬을 공부하면서 자연스럽게 알게 되실 거예요. 그리고 마지막으로 시스템 직접 체어 그러니까? 시스템 프로그래밍을 얘기하는 거죠. 제외하면 못한 뜻이에요. 거의 모든 기능을 수행할 수 있는 친구다. 이렇게 되어 있습니다. 다음으로 php 입니다. html 에 포함 내용 외에 페이지에 요. 동작하는 서버측 스크립트 언어라고 되어 있어요. 음 션 와 유사한 문법 구조를 가지 기도 하구요. 객체지향 프로그래밍을 지원하는데 보안에 좀 취약하다고 대형 있습니다. 지금보니까? 웹페이지 관련된

08:00
자바스크립트 랑 php 를 두가지가 지금 보안에 취약하다고 대형 있죠. 요즘도 확인하고 넘어가도록 하겠습니다. 자 그래서 어쨌든 개발 언어를 선정을 하게 되면 이 개발을 할 수 있는 환경을 구성을 해야 겠죠. 간단하게 보겠습니다. 일단 클라이언트 환경 서보 한 명을 구성을 합니다. 클라이언트가 뭔지 써 뭐가 뭔지는 앞에서 충분히 이야기를 했죠. 자세하게 설명이 되어 있는 뭐 일 것만 보고 넘어가시면 됩니다. 클라이언트에서 뭐 자 소프트 웨어 환경 구성 요건 조금 읽어볼 필요가 있습니다. 소프트웨어 환경 구성 은 내가 서부터 매화를 어떤 것들을 쓸 건지 그런 것들을 결정을 하는 겁니다. 굉장히 종류가 많잖아요. 요구사항 관리 도구가 있구요. 모델링 도구 가 있고 소프트웨어 구현 동우가 있습니다. 이 위쪽에 있는 것은 앞에서 계속 봤던 것들이고 요. 소프트웨어 구현 도구는 쉽게 말해서 우리가 코딩을 하는 프로그램이라고 보시면 되요. 그 프로그램을 안에서 코딩을 한다고 생각하시면 됩니다. 프로그램 개발에

09:01
가장 많이 사용되는 독으로 통합 개발환경 추려서 id 이라고도 합니다. 여기에는 코딩 뿐 아니라 굉장히 다양한 기능들이 존재를 해요. 그래서 이 소프트웨어의 구현도 고 또는 idea 기능이 아닌 걸 선택할 수 있으셔야 되요. 아 신점 여기까지 보고 잠기는 여러분들이 직접 하셔야 되는 거구요. 종류도 제가 지금 밑줄을 찾았죠. 나머지도 마찬가지 입니다. 테스트 도구 그 다음에 형상관리 도고 빌드 두고 다. 우리가 봤던 내용들이 요. 정리를 해 난 거라고 생각하시면 됩니다. 마지막으로 배치 프로그램이라는 걸 간단하게 좀 볼게요. 배치 프로그램은 사용자의 상호작명 없이 말이 좀 어려운데 쉽게 말하면 알아서 에요. 알아서 해준다. 뭐라 돼지 냐 면 일련의 작업들을 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄적으로 처리하는 기능을 가진 프로그램이다. 라고 게

10:00
있습니다. 알아서 특정 시간에 또는 특정 조건이 맞으면 알아서 수행을 해 준다. 몰아서 수행을 해 줍니다. 이렇게 생각하시면 되구요. 필수 요소가 중요하죠. 많은 양의 데이터를 처리할 수 있어야 되구요. 지금 읽어 봤죠. 자동화 그 다음에 문제가 없어야 되겠죠. 그리고 빠르면 좋겠죠. 이렇게까지 체크를 하시면 될 것 같아요. 그래서 이 배치 프로그램이 대표적인게 두 가지가 나와 있는데 현재까지 시험에 나온 건 추가 지거든요. 프링 배치와 쿼츠 스케쥴러 가 있습니다. 스피킹 배치는 스프링 소스 사와 뭐 액센츄어 사회의 공동 작업으로 개발 했다고 했는데 중요한 건 3대 요소 요즘 도매 책 하시면 될 것 같습니다. 그리고 허츠 스케줄러는 스프링 프레임워크의 플러그 인데요. 추가되서 수행하는 잡곡과 실행 스케쥴을 정의하는 트리거를 분리해서 유연성을 제공하는 오픈 소스 스케줄 하다. 라고 생각이 있죠. 가볍게 보고 넘어가시면 되겠습니다. 뭐 이런 것들이 있다. 정도 보고 떠 뭐 가는 거죠. 자

11:01
여기까지 하고 다음 강의 부터 본격적으로 프로그래밍 공부를 해보도록 하겠습니다.

728x90
반응형
posted by 아이윤맨
: