티스토리 뷰
전공/컴퓨터 코딩 데이터
컴퓨터학개론(Computer Science illuminated;Nell Dale & John Lewis) 1장~4장 정리
흔한 학생 2023. 6. 22. 23:22- 컴퓨팅 시스템
- 전자계산기, 컴퓨팅 시스템
- 1940 첫 출현
연도 하드웨어 소프트웨어
1951 | 연산 | 진공관 |
기억 | 자기드럼, 자기테이프 | |
1959 | 연산 | 트랜지스터 |
기억 | 자기디스크, 자기코어 | |
1965 | 연산 | IC 집적회로: |
cpu, DRAM | ||
기억 | 트랜지스터 이용 | |
-휴대용: HDD, 플로피디스크 | ||
입출력 | terminal, 키보드+화면 | |
1971 | ||
1990 |
- computing machine 출현(1947) - 컴퓨터(HW) 컴퓨팅시스템(HW+SW) 의미 - 최초의 범용(다양한 용도로 쓰이는)기계
- 데이터 처리
- 기억보조장치(MEMEX) 마이크로필름(미니레코드판) - 아날로그 컴퓨터
- 최근 경향: 컴퓨터는 데이터 중심 관점 - data -> info 변환, 가공하는 기기 - 데이터 사이언스 탄생 - 1993 유선전화 디지털화, 2002 디지털 데이터 비율 상승 등 데이터 과학 필요성 대두
- 컴퓨팅 시스템 = programmable data processor
- 네트워크의 발달
- 커뮤니케이터 ex) 스마트폰
- 도입과정 인터넷 - 1960군용->민간일부, 1983 군용망 분리, 사용 world wide web - 실험자료 공유목적(1989), 링크간 연결 cloud computing -메모리 렌탈 서비스 2006
- 학문의 탄생
- 컴퓨터 과학 - 출현배경 프로그래머만 사용 – 시스템/앱 프로그래머 분리 순수 사용자 출현 - 자동화 - 수학+과학+공학
- 데이터 과학: 데이터에서 얻기위해 여러 방법 사용 - 데이터 마이닝, 빅데이터
- 융합분야 컴퓨터에 기초해 일반 학문에 융합 - 바이오 정보학/분자역학/경제 예측
- 컴퓨터 시스템 구성
- 전문용어 Jargon
- 같은 단어라도 다른 의미로 쓰이는 경우 多
- 단위 K M G T P 등 시간: 10진수, 메모리: 2진수
- 추상화
- 설명 용이
- 시스템의 계층구조
- 컴퓨터 시스템의 구성
- 4대 구성요소 HW SW Data User
- 입출력 장치
- 입출력 장치
- 입출력
- 컴퓨터의 역사
- 컴퓨터 이전
- 계산도구 : 주판, 기계식 계산기
- 저장장치 : 자동베틀, 천공카드
- 해석기관: 찰스배비지(설계) Ada 최초 프로그램
- 전자식 컴퓨터 앨런튜링, 에니악
- 컴퓨터의 분류
- 메인프레임 컴퓨터
- 중앙 집중 처리
- 클라이언트-서버 모델 (server수행/client요청)
- 대기업에서 사용하는 대용량 컴퓨터
- IBM 절반 이상 점유 IBM
- 1911설립
- IBM704: 최초 대량생산
- FORTRAN: 최초 프로그래밍언어, 컴파일러
- IBM system/360: 운영체제
- IBM-PC: 레노버 매각, 최초 컴퓨터X
- 슈퍼 컴퓨터
- 초당 1015번 Peta급 연산
- CPU/GPU 1000개 이상 병렬처리
- 용도: 기상대, 과학 계산, 시뮬레이션
- 기업: 크레이 크레이 - 원통형 CPU 병렬처리 - 액체질소 냉각시스템 개발 - HP 현재 소유
- 미니 컴퓨터
- 메인프레임보다 낮은 중간 정도 성능
- 소규모 회사/업체의 작업용
- 마이크로 컴퓨터: 더 작은 경우
- 메인프레임보다 자유로운 환경 제공 ->해커등장 -IBM과 반대
- 기업: DEC DEC - 미니 컴퓨터 시장 개척 - PDP-1 MIT 해킹 그룹 인수 (1959) - PDP-7 Unix 최초 버전 실행 - PDP-11 C언어 최초 실행 (1970) - 슈퍼미니컴 시장 진출 -> 파산(1998)
- PC, 워크스테이션
- IBM+MS Mac 경쟁 IBM : 공개전략 -> MS SW 독점 Mac : 비공개전략, 마우스 그래픽 최초 도입
- 워크스테이션: 성능 강화 PC 복잡한계산, 애니메이션 제작용 현재는 PC와 구분 X 기업: 썬 마이크로시스템
- 휴대용 컴퓨터(노트북, LAPTOP)
- 초기 태블릿PC - 노트북 기반, 비싸고 성능저하
- PDA, 스마트폰
- PDA: 개인용 디지털 보조기 ex) 팜 파일럿 – 전자 메모장, 성공
- 휴대폰: 전화 목적 임베디드 시스템 - PDA정도 성능, 점차 성능 강화
- 스마트폰: 향상된 컴퓨팅 휴대폰 - Simon 최초 IBM 스마트폰 - 아이폰2007, 안드로이드폰2008 - 애플(폐쇄) 구글(공개)
- 태블릿 컴퓨터: 크기를 키운 스마트폰
- 게임기, 핑거팁 컴퓨터
- 게임기 pc와 구조 비슷, 게임용 컴퓨터
- 핑거팁 컴퓨터 라즈베리파이: 25달러, 작은 pc 아두이노: 5달러, 임베디드 개발용 보드 - 외부 센서 제어에 유리 - 전자제어 입문용, 교육용
- PC 구조
- 기본 지식 보드 내부구조 전원공급장치
- 메인보드와 슬롯
- 메인보드=마더보드 daughter board–확장 보드(장착,전원연결 필요) 슬롯: PCI, AGP, PCI express
- CPU와 메모리
- CPU
- 메인메모리 - address에 저장된 value
- RAM: 휘발성 메모리 ex) DRAM 多
- ROM: 비휘발성 메모리 ex) 메인보드의 start-up 프로그램 bios chip
- 내부 bus: CPU 메모리 사이 통로
- 캐시 메모리: 반복사용되는 정보 저장 빠른 실행 가능, 보통 CPU 내장
- 모니터와 그래픽카드
- 화면해상도
- 모니터 연결방법 메인보드 내장그래픽 - 중급 그래픽 성능, 사무용, DVI-D단자 2. GPU – 그래픽 카드 내부 장착 칩 - 엔비디아 GeForce, AMD Radeon
- GPU 커넥터 - HDMI(영상,음성,제어 모두) > DVI(영상신호만)
- PC 저장장치
- 자기저장장치
- 종류 : 하드디스크, 플로피디스크, 자기테이프
- HDD: hard disc driver - 1TB 이상 대용량
- HDD 포맷팅 - 트랙/원형섹터/ 섹터(1K ~ 8K byte 단위 read /write 기본 단위, 1 byte 만 고쳐도 1섹터씩 수정)
- HDD 용량
- 광학저장장치
- 레이저 광학기술(CD,DVD,blu-ray) land: 평평 / pit: 레이저로 태움
- CD: 74분 650~MB
- DVD: 4.7~GB
- blu-ray: 25GB 필요성 낮아짐
- 연결단자와 케이블
- SATA: 하드디스크 접속 규격
- Parallel Ports: 8비트 병렬 전송 usb
- Serial Ports: 1비트 직렬전송, 저비용
- USB : 케이블 통일 전원불필요
- 플래시메모리
- 플래시메모리 기술: 비휘발성 장점: 작고 충격에 강함, 하드디스크보다 빠른 속도 단점: 수명 짧음, 큰 단위로 지움(읽을땐 괜찮음) - SD카드 USB SSD
- SD 카드 스마트폰, 디카, gps 기억장치
- USB 플래시 드라이브: 이동형 저장장치
- SSD 빠르고 조용하고 작고 전력소모적음, 비쌈 -STAT 연결 / 메인보드 연결
- 데이터의 2진수 표현
- 2진수 표현
- 가장 간단한 데이터이기 2진수를 사용함(yes ,no)
- 스위치, 캐퍼시터(충전, 방전)
- 캐퍼시터 8개로 8개까지 저장 가능 너무 많이 필요해서 2진법 도입
- 비트: 2진수 한 자리를 의미
- 바이트: 8비트 읽고 쓰는 최소 단위 (영어 문자 1개)
- 256까지 표현 가능
- 모든 데이터 2진수 형태 저장 - 숫자, 문자, 이미지, 신호데이터 등 해석 가능
- 8진수, 16진수의 사용
- 2,10진수 단점: 32비트짜리 매번 바꿔 해석 힘들다
- 8진수: 2진수 3자리씩 표기
- 16진수; 2진수 4자리씩 표기
- 사칙연산-자리 올림 자주 발생
- 표현방법 2진수 0b, 8진수 0, 16진수 0x를 앞에 붙임
- zero 헷갈려서 slashed zero 도입
- 아날로그와 디지털
- 아날로그: 연속적인 물리량 디지털: 수치로 표현
- 디지털화 A/D컨버터 마이크 D/A변환기 스피커
- 디지털 데이터의 장점 - 통신 잡음에 강함, 압축하기 좋음
- 수치 데이터
- 자연수 표현 natural numbers
- 2진수 표기 0 포함, 1byte:255 2byte 65536까지
- 음수 표현
- 처음엔 처음 1bit을 부호로 해석 -계산이 복잡함, 0이 2개
- 2진수 음수 계산방법: 2의 보수 이용
- 오버플로우, 언더플로우 - 양수+양수/음수+음수 허용한계 벗어남
- 자연수 2k-1까지 표현 정수 -2k-1 ~ 2k-1-1 표현
- 실수 표현
- 고정 소수점 방식 - 가상의 소수점 가정 - 간단하지만 숫자 범위 작음
- 부동 소수점 방식 234 x 1056 = 1.234E56 32비트-소수점이하 6자리 64비트 소수점이하 13자리 정밀한 계산 요구되는 시점에 특별한 방법 쓰기도 함, 무한소수 표현 못함
- 양자 컴퓨터
- 전자가 아닌 양자를 사용 0이면서 1인 상태 표현 – 4가지 표현 가능qubit 2가지 동시 계산 가능
- 텍스트 데이터
- 텍스트 데이터
- 문자를 2진수 코드로 저장
- 아스키코드 글자1개 –8비트
- word = 한꺼번에 처리하는 비트/바이트 수 *윈도우 프로그래밍에서만-(1word=2바이트)
- ASCII 코드
- 코드 표준을 정함 -> 아스키,유니코드
- 아스키 코드 7비트로 128자 지정, 첫 32개는 전송/제어 코드 *숫자2가 아닌 문자2를 보낼 땐 아스키코드 50임
- 확장 아스키 코드 8비트로 256자 지정-이때 8비트=1바이트 지정
- 유니코드 문자 집합
- 전 세계 모든 문자 다루는 표준 문자전산 처리방식
- 전 세계 문자 고유 코드 부여
- 문자 1개 = 4바이트
- 앞부분은 확장 아스키코드와 동일
- 앞부분 16bit(2바이트)에 집중 배치
- 표기법: U+(16진수) U+AC00 = 가
- 32비트 유니코드 42억개이지만 16비트에 집중
- 16비트로는 이미 문자 표현 불가능
- 현대 한글 모든 조합 11172자 고대 한글 1638750자
- 한자만 해도 국가별로 다름
- CJK 통합 한자(한자 통일+각 나라별)
- 유니코드 전송 방식
- 4바이트 코드-회사입장에서는 저장 용량 커짐 -가변 너비 문자 인코딩 등장 - 자주 사용 문자 1,2바이트로 사용
- UTF-8 미국/유렵 1바이트만 사용
- UTF-16 2바이트 사용해 한글/한자 해결 CJK 국가 선호
- 윈도우10에서 양쪽 모두 가능, 대부분 자동 감지
- 팬그램 알파벳/자모 다 나오는 font 테스트 문장
- 오디오 데이터
- 오디오 데이터 2진수 변환과정 3가지
- 샘플링: 아날로그 신호 1초에 몇 번 추출? 8000Hz: 전화, 44100Hz: CD MPED-1 96000Hz: DVD 블루레이
- 양자화: 신호 크기 정밀도 ex) 8bit: 256단계, 16 bit: 65536단계
- 부호화: 양자화 값을 이진수로 변환 ex) 8000Hz * 8bits = 64000bps = 64kbps
- 예제: 채널1(모노) 채널2(스테레오) 양자화: 8비트 16비트 샘플링 22040Hz
- 보통 CD 스테레오 2바이트 44100Hz -> 1초에 176400바이트, 코덱으로 압축해야함
- 오디오 파일 포맷
- 레이저 광학기술
- CD
- 포맷??
- CD, MP3, FLAC
- 데이터 압축: 공간, 대역폭을 줄이는 작업
- 비손실/무손실과 손실 압축 기법이 있음
- 이미 압축된 MP3는 zip으로 또 압축해도 X
- zip 비손실/ JPEG 세밀한 변형, 압축률 good
- 압축 기법
- 비손실 3가지 기법: 키워드/런-렝쓰/허프만 인코딩
- run-length encoding 반복되는 패턴은 flag 와 반복횟수를 쓰자 3바이트로 압축, 흑백 팩스, 이미지에서 사용
- 이미지 데이터
- 이미지와 그래픽스
- 이미지 저장방법(레스터 방식): 픽셀들 배열
- 흑백 : 1픽셀 – 1비트
- 그레이스케일 : 1픽셀 – 8비트 256단계(검정00~하양FF) 2비트, 4비트 거친 그레이 스케일 가능
- 컬러 : 1픽셀 – 3원색 * 그레이스케일 = 3바이트 트루컬러24비트/RGBA32비트/딥컬러30비트
- 빛의 삼원색
- RGB 가산색계, 0.0~1.0 값
- 컬러 파렛트 웹 브라우저 표시 가능 색상
- RGBA와 CMYK
- 투명도가 추가된 RGBA 0~255 쓰는 직관적 표현 방식 0~1.0 쓰는 고급 그래픽스 방식
- 인쇄 cyan,magenta,yellow 감산 색계 실제로는 검은색 안 나와서 cmyk 모델 사용
- 해상도
- pixel, color depth(1픽셀당 비트 수), 해상도
- progressive scan
- interlaced scan – 저비용, 홀수선 짝수선 번갈아
- 그래픽스와 동영상 데이터
- 래스터 그래픽스 방식
- BMP-압축x, 파일크기 커짐
- GIF-비손실,인터넷용,컬러파렛트,애니메이션 가능
- PNG-비손실,인터넷,32비트트루컬러,
- JPEG – ISO 지정 압축 기법 보통 손실압축, 세밀한변형-압축률높임
- 벡터 그래픽스 방식
- 장단점 수정하기 좋음, 확대O, 이미지에 부적합
- 응용분야 SVG(2차원벡터그래픽) - 인터넷 자료 교환용 단순한 도형(아이콘,로고) 글꼴,
- pdf(글꼴 처리 해야해서) - 포맷 공개
- 동영상 데이터
- 코덱 - 손실압축
- MPEG 1 CD 저장용 2 DVD 저장, 화상회의용 – MP3 나옴 4 가장 널리 쓰임
- MPEG 압축 기법 공간 압축: JPEG처럼 프레임마다 압축 시간 압축: 프레임간 차이만 저장
- I-frame 원본 P-frame I에서 바뀐부분 B-frame I,P의 양방향 차이 - 다만 역재생 어려움 - Original 800 > I 100 > P 33 > B 12~33
- 메타 데이터
- 기계 위치 날짜 등 정보, 관련 정보
- 게이트와 논리회로
- 반도체 소자
- 컴퓨터에 CPU 반드시 필요
- 트랜지스터, (집적한 IC) 집적도 높여 대량 사용 IC – LSI – VLSI
- 메모리 반도체 DRAM(자료저장용) 캐퍼시터 사용, 상대적으로 간단
- 시스템 반도체 CPU 트랜지스터 이용, 가치 높음,
- DRAM 1bit 저장하는 캐퍼시터 대량 집적 대용량 메모리 - RAM 휘발성메모리 - ROM 비휘발성 메모리
- 플래시 메모리 RAM ROM 합친 느낌 USB 메모리, SSD(가격이 비쌈)
- 게이트, 논리회로
- 2진수연산 모든 계산 ROM에 저장: 느림, 고비용 2. 덧셈 회로 – 현재 사용되는 방법
- 논리회로: 연산을 위한 gate 결합
- Boolean expressions 이용
- 게이트의 종류
- NOT gate, inverter /AND/OR
- XOR gate: 둘 중 하나만 참이어야 참1이다(덧셈시)
- NAND gate: 둘 다 1이면 거짓0
- NOR gate: 1있으면 0
- BUF gate: 증폭, 지연
- 다중입력 게이트
- 게이트 만들기
- 트랜지스터 이용
- 유니버설 게이트: NAND 한 종류로 모든 게이트 가능함
- 프로세서 구조 (CPU 기본적인 구조 설명)
- 회로 동등성
- 같은 입력에 대해 같은 출력이 나옴
- Boolean algebra 단순화 수학 이론
- 가산기(더하는 회로)
- 2진수 더하기
- 반가산기(half adder) 덧셈은 XOR과 AND 4자리 2진수 더하기
- 전가산기 half adder 2개, or 결합 sum과 carry 출력
- 입력3개 출력2개 4자리 계산 full adder 4개
- 멀티플렉서: 조합회로 기술 중 하나
- MUX 여러입력 중 하나만 선택
- DEMUX 여러 출력 중 하나만 선택
- 4x1 멀티플렉서=4개 중 1개 선택 두 자리 2진수로 4개 표현
- 메모리 회로: cpu 중간 계산 결과 저장
- 디램이 캐퍼시터 쓰기에 트랜지스터보다 느림 -결과를 못 받음, 중간에 임시 저장(latch) 트랜지스터로 결과 저장
- S-R latch NAND 꼬아서 0or1 저장 ->1비트 메모리 - 0을 넣어야 작동? negative logic - S=1, R=1 이면 상태 유지 - S=1, 잠깐 R=0 X=0으로 초기화 - 잠깐 S=0 X=1로 됨 - S-R latch S,R 둘 다 0 금지
- D flip-flop - 0 안되는 불안정한 점 개선 - 지금의 CPU
- 레지스터(CPU내의 초고속 메모리) D flip flop 이용
- 클럭의 도입 여러 개 저장할 때 시간을 맞춰야함 클럭clock: 시간 맞추는 기준 신호 ex) 3.0GHz CPU – clock 기준 의미 30억번 저장
- 프로세서 구조(종합 설명)
- 반가산기-전가산기-n비트 가산기-계산가능
- 래치-플립플롭-레지스터 – 저장가능
- 멀티플렉서-결과 선택
- ALU: 산술/논리(연산)장치 CPU 일부, op-code
- 레지스터 파일: 레지스터 여러 개, ALU와 연결
- 마이크로 프로세서
- 폰 노이만 아키텍처
- 명령어, 제어장치 어떤 행동을 할것인지 저장한 것, CPU가 실행하는 최소 단위 명령어 정리해서 메인메모리에 저장(프로그램) 명령어 저장 방식
- 폰 노이만 아키텍처
- 명령어 사이클
- 버스
- 프로세서 비트
- IC와 CPU
- IC분류
- 마이크로프로세서
- 마이크로프로세서 구분 - CPU: 계산전용 - MPU 단일칩CPU - MCU 아두이노 - SoC 1개의 desktop처럼 - AP 스마트폰, 태블릿의 고성능 SoC 칩 - GPU 3D 그래픽용 MPU - DSP 아날로그->디지털 신호처리 전용 - MMU 메모리 관리 칩(현재는 CPU 내장)
- 임베디드 시스템
- 임베디드OS
- 적용분야 - 항공기, 전투기 - 가전 - IOT : 스마트홈, 커넥티드 카
- 기계어 어셈블리어
- 기계어
- 폰 노이만 아키텍처
- 인스트럭션(op-code,resister 선택 등 들음)
- 기계어: instruction을 2진수로 직접 주는 방식
- 기계어 특징: CPU별로 기계어 다르다 호환이 안된다
- 사례연구: PEP/8
- CPU 복잡 -> 간단한 기초교육용 필요 - 가상의 CPU 시뮬레이션 모델
- 16비트 구조, 0부터 FFFF까지
- 116()
- 누산기
- 비트 레지스터
- 개의
- PC는 16비트(예상대로)
- IR 16비트 아닌 8비트 명령 + 16비트 address IR에 뭐가 들어 있을ㄲ 앞쪽 4~5비트가 op code 뒤쪽 3비트가 해석방법(무슨 데이터를 가져올거냐 뺄거냐)
- 뒤쪽 3비트 addressing mode immediate 방식 16비트부분레지스터로그대로해석 direct 방식 16비트가 메모리 address, 메모리에서 - 16비트 CPU라서 메인메모리 2바이트 가져옴
- ex)
- 어셈블리어 기계어 너무 어려워 도입=mnemonic code
- 기계어를 영단어 조합해서 표현
- pep/8의 어셈블리 모델 비슷하게 바로 명령어, 주소 방법있음
- 어셈블러로 기계어로 변환 exe 파일 2. exe 실행, 프로그램 실행 두 단계 거쳐야 함
- 메모리 주소 너무 길고 기억못함- 변수 도입 - 별명을 붙임 - 어셈블러가 변수도 관리
- 분기 명령
- 다른 명령으로 이동
- 레지스터값에 따라선택적 변경 가능
- 경우에 따라 하는 일이 달라짐 - 혁신: 조건, 실행 바뀜, 반복가능
- 의사코드
- 알고리즘과 의사코드
- 알고리즘
- 의사코드
- 의사코드 예 A의 제곱근 x 구하기
- 의사코드 작성법
- 원칙(일관되고 모호하지 않게) 값을 저장하는 변수, 입력(읽어옴), 출력(print), 선택(if then else), 다중선택(else if), 반복(while)
- 어셈블리어 분기명령과 비슷한데 알아보기 쉽다.
- 배열변수
- 변수에 값을 넣-주소를 찾아서 값 입력 -수열과 비슷하다?
- 수열 변수 수열로 표현-아래첨자 표현 힘듦-a[2]처럼 씀
- 배열변수 array -연속해서 배치(순서대로) -하나만 알면 나머지 위치도 알 수 있음 -1개당 2바이트 증가(32,64비트 경우 다름!!) 배열 번호 이용해 반복 수월해짐 배열 변수도 일반 변수처럼 사용 가능
- 문제 해결=알고리즘 답 찾기
- (문제이해-계획-실행-재검토)
- 문제 이해 질문하기(처리할정보, 예외, 답을 어떻게 아냐)
- 계획 분할정복(작게 나눠 해결) =하향식 설계(top-down design)
- 하향식 설계의 예(몇월-무슨계절?)
- 탐색과 정렬
- 알고리즘
- 정렬sort (비교연산 이용)
- 알고리즘instaceanswer
- 구할 수 있는 방법
- 에 대한
- 모든
- 순차탐색 = linear search
- input data가 배열에 있다고 가정 하나씩 체크해서 보고
- bool 복잡한 조건의 연결
- 순차탐색의 개선 정렬된 배열이기에 필요없는 연산 할수도? 찾으면 끝내도록
- 이진 탐색
- 이진탐색 가운데 값을 확인해서 범위를 절반으로 줄인다
- 이진탐색 장단점 -속도 향상 -정렬된 배열에서만 사용 -n번 비교하면 2^n개 탐색 가능(최대log2n번)
그럼 정렬은 어떻게 할까?
- 정렬
- 선택정렬 unsorted에서 가장 작은거 sorted로 옮김 -이미 옮긴 위치도 검사를 함-비효율 -빈 위치에 하나 넣자-> 하나의 배열만 쓰자
- 하나씩 맞바꿔가며(swap) 작은거부터 정렬
- 스왑 operation 2개를 바꾸려면 변수(대피)가 하나 더 필요함
- 연결 리스트, 트리(효과적인 저장방법)
- 링크의 도입(배열에)
- 배열의 문제(데이터 추가,삭제 힘듦) - 한칸씩밀고 넣거나 삭제 빈칸 생김
- node 구조의 도입 -데이터의 연결 상태도 포함 -link: 다음 data의 위치를 가리킴 -맨뒤에 데이터 추가해도 실질적 순서는 link -data 수정 적어짐, 삭제도 마찬가지
- 복합 자료형
- 구조체(structures)=레코드 (records) - 연관된 내용 한번에 저장, 여러 요소가 들어감 -node 구조는 복합자료형의 대표적 형태
- 연결 리스트
- link에서 index대신 메모리 주소 사용 - 마지막은 end대신 0사용, 배열이 필요 없어짐
- 연결리스트: 상호 연결된 리스트 - 마지막은 접지 표시함
- 포인터 다른 노드를 가리키는 주소를 저장한 변수
- null pointer: 끝값, 0으로 저장된 변수
- 이중 연결 리스트-이전 데이터도 표시 -prev 존재, 양쪽으로 이동
- 트리 (링크 구조 확장)
- 링크 단점: 1:1 대응만 가능
- 한 노드에 여러 링크를 추가-링크를 배열로
- root node, internal node, leaf nodes
- 혹은 부모, 자식노드 -> 폴더 구조
- 이진 트리
- 각 노드에 링크가 최대 2개(child)만 있음
- left, right
- 이진 탐색 트리BST(binary search tree) - right쪽이 무조건 큼
- BST 예시 - 특정 값 찾을 때 이진 탐색과 동일한 방법?
- 그래프와 추상자료형
- 그래프
- 비교 -연결리스트-1개의 링크 -트리-2개 이상의 링크, 한 방향 -그래프-제한 없음(데이터 저장 방식)
- V=꼭짓점들의 집합(node) E=변들의 집합(link)
- 종류(무방향 그래프, 방향 그래프) - graph: edge에 방향성 없음, 양쪽 진행가능 - digraph: 방향존재 ex) 노선도, 추가 정보도 저장 가능
- 그래프 탐색 navigation 응용 - A에서 B 갈 수 있는가, 최단 거리, 최소 비용
- 추상자료형
- 자료구조에 대한 동작 데이터 다루는 방법, 동작
- ADT(abstract data type) - 객체 지향의 기초 .data : 자료구조와 동일하게 표기 .method() : 함수 형태로 표시
- 큐 (많이 쓰이는 ADT 함수 설명)
- queue = 대기줄 작동방식: 선입선출 enqueue(): 원소를 큐에 추가 v=dequeue(): 오래된 원소를 제거
- 만드는 방법 연결리스트, 배열
- 프린터에 사용되는 방식(프린터 큐)
- 스택 (또 다른 ADT)
- stack = 쌓다 작동방식: 후입 선출 push(v) : v를 스택에 추가 v=pop() : 가장 최근 원소를 제거
- 만드는 방법 연결리스트, 배열 top이 가장 최근 데이터를 가리킴
- 스택-미로찾기-지나온 길 기록 +로봇청소기
- 서브 프로그램
- 자주 사용되는 프로그램 일부 재사용 = procedure, subroutine 새로운 명령으로 추상화 함수 – 수학의 함수를 추상화, 값을 return
- 처리에 필요한 정보는 변수로 저장 매개변수parameter: 정보를 받는 인수argument: 매개변수에 전달되는값
- 변수
- 고급 프로그래밍 언어
- 고급 프로그래밍 언어
- 필요성 - 프로그램을 만들 때 더 쉽게 - syntax(문법)를 이용, 목적에 따라 다양한 언어
- 자료형 도입 - 의사코드와 다르게 형태 정확히 지정
- 선언 - 변수를 미리 선언
- Boolean expression - 비교, 논리연산자 정의
- 대입문= 선택문if 반복문while 제어구조
- 번역 과정: 1.프로그램 이용 어셈블리로 exe실행
- 컴파일러 방식 - 2번처럼 코드-컴파일러-exe만들고 실행 - 빠름, 처음만 복잡함?
- 인터프리터 방식(언어를 이해하는 기계) - 바로바로 번역 ex)jupyter - 속도 느림, 번거로움
- Java의 가상 기계 방식 - 컴파일러로 bytecode를 만듦-java에서 번역
- 비교 - 어셈블러: exe파일 - 컴파일러: 고급언어->exe파일 컴파일이 복잡, exe실행 빠름, 특정 CPU에서만 작동
-
- 인터프리터: 바로 번역, CPU 간접 실행, 실행이 느림, 간단한 일
-
- 가상 기계 방식: 고급언어->바이트코드->기계 다른 CPU에서도 실행 가능 자바는 웹페이지에서 모든 pc에서 실행하도록?
- 프로그래밍 언어 분류
- 분류: 수행적 / 선언적(함수적/논리적)
- 함수적: 수학 함수로 자료 처리 R, f(x,y) - (fxy), 인터프리터 방식 ex) 사용자 입력 필요
- 논리적 Prolog – 첫 부분 fact 나열 후 질문 like AI
- 객체지향 패러다임 OOP
- 캡슐화: object의 정보와 방법을 모음
- 클래스 ex) UI의 width,height 속성, create,resize 방법 - instance class로 찍어냄? - 상속 class추가로 확장-복잡한 class 다형성 – 상속 중 겹칠 때 우선 순위부여(이런 게 있다)
기말고사 부분입니다(1,2편으로 구성)
컴퓨터학개론(Computer Science illuminated;Nell Dale & John Lewis) 5장~ 기말고사 정리
운영체제 유닉스계열 운영체제 파일, 디렉토리 UI
studentstory.tistory.com
'전공 > 컴퓨터 코딩 데이터' 카테고리의 다른 글
[마이크로프로세서] CISC와 RISC의 차이, CISC 기본 구조 (0) | 2024.03.07 |
---|---|
컴퓨터학개론(Computer Science illuminated;Nell Dale & John Lewis) 5장~ 기말고사 정리(2) (0) | 2023.06.22 |
컴퓨터학개론(Computer Science illuminated;Nell Dale & John Lewis) 5장~ 기말고사 정리(1) (0) | 2023.06.22 |
[인공지능 기본 Part 1] 1강 Python & Anaconda (0) | 2022.06.19 |
컴활 1급 2급기출 (0) | 2021.02.21 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 파스타
- 맛집
- 알리익스프레스
- 경북대
- 카시오
- 알뜰폰요금제
- 오블완
- 알뜰 요금제
- f-94w
- 티스토리챌린지
- 배송기간
- 방어동작
- 방향장
- 메쉬 밴드
- 문서 스캔
- 네이버페이
- 타란튤라
- a모바일
- 리브모바일
- 리브엠
- 10만포인트
- 카카오페이
- f-91w
- 교체
- 계산방법
- 할인
- 북문
- Liiv M
- mealy
- 시계 줄
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함