본문 바로가기
728x90
반응형

2022-286

4장 파일 입출력 4.1 시스템 호출 시스템 호출(system call) 커널에 서비스 요청을 위한 프로그래밍 인터페이스. 응용 프로그램은 시스템 호출을 통해 커널에 서비스를 요청한다. 운영체제가 지원하는 라이브러리 함수라고 보면 이해하기 쉽다. 주요 시스템 호출 파일: open(), close(), read(), write(), dup(), lseek() 등 프로세스: fork(), exec(), exit(), wait(), getpid(), getppid() 등 메모리: malloc(), calloc(), free() 등 시그널: signal(), alarm(), kill(), sleep() 등 프로세스 간 통신: pipe(), socket() 등 4.2 파일 파일 입출력 파일 열고->읽기/쓰기 등->파일닫기 파일 열.. 2022. 10. 30.
자바 중간고사 01- 자바 소개 자바는 범용언어이며 특히 network환경에 강한 특징을 가지고 있다. 자바는 C++의 preprocessor, pointer, 다중상속, 구조체, 전역변수, goto문, 연산자 중복 등의 기능을 제외하여 언어의 복잡성을 제거함 automatic garbage collection 기능을 제공함 객체지향 객체지향은 우리의 실 세계와 유사한 프로그램 방식이다. 자바는 Object - Oriented language이다. 자바 프로그램의 모든 요소들은 object(객체)로 표현된다. 객체지향은 소프트웨어의 재사용과 정보의 캡슐화같은 많은 장점을 제공한다. object 속성을 나타내는 데이터, 데이터를 변경하거나 조작할 수 있는 메소드(method)로 구성 Class object는 항상 cla.. 2022. 10. 26.
5. Digital Signal Input 5.Digital Signal Input -switch input -stable switch input -measure a digital signal period -keypad input 디지털 신호 0과 1 혹은 HIGH LOW 두가지 값으로 표현되는 신호 noise에 강하고 데이터의 저장 및 처리가 용이하다. 풀업을 설명하고 있는 그림이다. 스위치가 연결된 경우 전류가 GND로 빠지면서 PIN의 값은 0(LOW)이 되고 스위치가 연결되지 않은 경우는 전류가 PIN쪽으로 흐르면서 PIN값이 1(HIGH)이 된다. 풀다운의 경우는 반대임. Vcc – 스위치 – 2번핀 이렇게 연결시 floating이라는 외부 간섭 때문에 스위치off인데도 전류가 흐르는 문제생김 floating 현상을 해결하기 위해 GND.. 2022. 10. 23.
Object, String, StringBuffer Object클래스 java.lang 패키지에 포함되어 있다. 모든 클래스의 수퍼 클래스이다. -모든 클래스에 강제 상속 -모든 객체가 공통으로 가지는 객체의 속성을 나타내는 메소드 보유 Object클래스의 주요 메소드 boolean equals(Object obj) : obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true 리턴 Class getClass() : 현 객체의 런타임 클래스 리턴 String toString() : 현 객체에 대한 문자열 표현을 리턴 toString() Point p = new Point(2,3); System.out.println(p); Point 클래스의 객체 p가 있고, p를 출력하게 되면 p는 자동으로 p.toString()으로 변환되어 출력된다. toStrin.. 2022. 10. 21.
Exception 수식 계산할 때 0으로 나누면 오류가 발생한다. public class Numbers { double tot,avg; int arr[]; Numbers(int[] nums){ this.arr = nums; } double getTot() { for(int i=0;i=0) { this.balance -= amnt; System.out.println(name+"님 계좌에서 "+amnt+"인출완료"); return amnt; } else { throw new Exception("잔액 부족!!!"); } } void printInfo() { System.out.println("*************info************"); System.out.println("계좌번호: "+accountNum); Sy.. 2022. 10. 20.
3. 객체지향 객체지향 Software module의 재사용과 독립성을 강조 프로그램 모듈을 재사용할 수 있음. 프로그램의 확장 및 유지보수가 용이하다. object의 구성 속성을 나타내는 data 데이터를 변경하거너ㅏ 조작할 수있는 method로 구성 object는 항상 class로부터 생성된다. 정보처리의 주체는 class가 아니라 object이다. 내가 이걸 ppt보면서 정리하는게 의미가있나;; 2022. 10. 20.
오버로딩 생성자 오버로딩 클래스에 하나 이상의 생성자를 중첩하여 사용할 수 있다. 생성자의 이름은 같지만 매개변수의 타입과 개수는 달라야 한다. class Box{ int w; int h; int d; public Box(){ w=1; h=1; d=1; } public Box(int w){ w=w; h=1; d=1;} } 이런식으로 이름이 같은 생성자를 만들 수 있다는 것임. 오버라이딩 부모 클래스에서 선언된 메소드를 자식클래스에서 재정의함 (다형성) 2022. 10. 20.
동치 알고리즘 #include #include #define MAX_SIZE 24 #define IS_FULL(ptr) (!(ptr)) #define FALSE 0 #define TRUE 1 struct node { int data; struct node* link; }; int main(void) { short int out[MAX_SIZE]; struct node* seq[MAX_SIZE], * x, * y, * top; int i, j, n; printf("Enter the size( 2022. 10. 20.
4장 - 이중 연결 리스트 지금까지의 연결 리스트는 한 노드에 링크가 하나였다. 이중 연결 리스트는 이전 노드, 다음 노드를 가리키는 링크가 각각 하나씩, 링크가 총 두개인 노드로 이루어져 있다. struct node { struct node* llink; int data; struct node* rlink; }; 물론 이중 연결 리스트도 체인형, 원형 둘 다 구현 가능하다 원형 이중 연결 리스트에 노드 추가 void dinsert(struct node* node, struct node* newnode) { //newnode를 node의 오른쪽에 추가 newnode->llink = node; newnode->rlink = node->rlink; node->rlink->llink = newnode; node->rlink = newn.. 2022. 10. 20.
추가적인 리스트 연산 추가적인 리스트 연산들 chain의 방향을 반대로 변경: invert() 두 개의 chain을 통합: concatenate() 원형 리스트에 대한 연산 수행 시, 마지막 노드에 접근하기가 어렵다. 이를 해결하기 위해 원형 리스트의 이름은 마지막 노드를 가리키도록 하자. invert() struct node * invert(struct node* lead) {//lead가 가리키는 리스트의 방향을 반대로 변경한다. struct node* middle, * tail; middle = NULL; while (lead) { //lead가 널이 아닐떄까지 tail = middle; middle = lead; lead = lead->link; middle->link = tail; //middle의 링크를 반대로 바.. 2022. 10. 20.
Analog Transmission 이번 시간에는 Digital data 를 Analog signal로 변환하는 방법에 대해 알아보자. Digital Data to Analog Signal 무선 통신에 주로 사용한다 (Wi-Fi, Zigbee, LTE , NR , etc.) Bitrate and Baud Rate Bit rate = N : 초당 비트 수 (bps) Baud rate = S(보오 레이트): 초당 Signal element의 수 baud rate is less than (or equal) to the bit rate 보오 레이트는 비트 레이트보다 작거나 같다 r : 하나의 signal symbol이 전송하는 bit 양. r = bit / signal symbol S = N / r 예시) 아날로그 시그날이 4bit per sig.. 2022. 10. 19.
gdb 디버거 gdb 주요기능 정지점(breakpoint)설정 한 줄씩 실행 변수 접근 및 수정 함수 탐색 추적 gdb를 사용하기 위해 컴파일 시 -g옵션을 사용해야 함. $ gcc -g -o longest longest.c gdb 실행 $ gdb [실행파일] (소스 파일이 아닌 ./a.out 같은 실행파일 이어야함!) gdb 기능 소스보기: l(list) b [n]: n번 줄에 정지점을 설정 p [변수명]: 해당 변수 값 프린트 run : 현재의 인수를 사용하여 프로그램을 실행 run : 새로운 를 가지고 프로그램을 실행 continue: 현재 위치에서 프로그램을 계속 실행(약자 c) n: 한 줄씩 실행시킴(next) step: 한 줄씩 실행시킴. 함수 포함시 함수 내부로 들어가서 한 줄씩 실행함 break : 라인.. 2022. 10. 14.
아두이노와 기타등등 알아보기 펌웨어: 하드웨어의 제어와 구동을 담당하는 운영체제 아두이노 ATmega328 마이크로컨트롤러 input voltage: 7~12V 14개의 Digital IO Pins(0~13번까지 총 14개, PWM지원 핀은 3,5,6,9,10,11) 6개의 analog pins(A0~A5) 32KB 플래시메모리 13번핀 LED, Power LED 존재 전압: 전위가 높은 쪽과 낮은 쪽의 차이. 1쿨롱의 전하가 갖고있는 에너지 전류: 1초당 1쿨롱의 전하가 단위 면적을 통과했을 떄를 1A로 정의. 전하의 흐름 저항: 전류의 흐름을 방해하는 정도 브레드보드: 2.시리얼 통신 UART(Universal Asynchronous Receiver/Transmitter) 병렬 데이터를 직렬 방식으로 전환하여 데이터를 전송하는 .. 2022. 10. 14.
4장 - 연결리스트를 이용한 스택과 큐 배열과 연결 리스트의 비교 저장 방식의 차이 배열: 메모리의 인접한 곳에 저장 연결 리스트: 각 노드들은 메모리의 여러 곳에 나누어 저장되고, link포인터를 이용하여 다음 노드의 주소를 기억함 메모리 사용 측면 저장될 데이터의 수를 안다면 배열이 효과적.(연결 리스트는 data 뿐 아니라 link포인터가 필요) 데이터 수를 모를 경우, 새로 데이터가 입력될 때마다 malloc 실행 후 연결하면 되는 연결 리스트가 유리함. 정렬된 데이터의 유지 배열: 데이터가 추가될 때 기존 데이터의 위치를 변경해야 할 수 있음, 이진 검색 가능 연결 리스트: 데이터가 추가되더라도 기존 데이터의 위치 변경은 발생하지 않음. 이진 검색 불가능 배열을 이용한 스택과 큐의 구현 방법의 문제점으로 메모리 낭비, stack fu.. 2022. 10. 14.
Digital TransMission(2) - Ananlog data to digital data conversion 저번 시간에는 Line coding: digital data -> digital signal 변환 방법을 배웠다. 이번시간에 배울 내용은 analog data -> digital data 변환 방법이다. PCM (Pulse Code Modulation) 아날로그 데이터를 디지털 데이터로 바꾸는 방법 PCM은 3단계로 나타낼 수 있다. 1. Sampling 2. Quantization 3. Binary encoding 아날로그 데이터의 특징 두가지가 있는데, PCM의 step을 따라가면 이 특징들을 디지털데이터의 특징으로 바꿀 수 있다 1. 연속적인 값을 가짐 2022. 10. 12.
make 시스템 대규모 프로그램의 경우에는 헤더, 소스파일, 목적파일, 실행파일의 모든 관계를 기억하고 체계적으로 관리하는것이 필요함. make 시스템을 이용하여 효과적으로 작업. Makefile의 구성 형식 대상리스트: 의존리스트 (tab)명령리스트 예시) main: main.o copy.o gcc -o main main.o copy.o main.o: main.c copy.h gcc -c main.c copy.o: copy.c copy.h gcc -c copy.c make 실행 $ make 혹은 $ make main 여기서부터 다시 씀 파일이 많아지면 컴파일 하는데 시간도 오래걸리고, 파일 관리하기가 힘들어지는데, make 시스템을 이용하면 파일관리, 컴파일을 효과적으로 할 수 있다. $ vi Makefile 해서 m.. 2022. 10. 11.
객체와 클래스 생성자 생성자가 선언되지 않은 경우에는 기본 생성자를 컴파일러가 자동으로 만들어 줌. (하나라도 생성자가 선언된 경우는 기본생성자가 생기지않음) this 클래스 내에서 메소드 작성할 때 인자로 받는 변수이름과 클래스 멤버변수의 변수명이 같을 때 멤버변수를 this.변수명 으로 써서 구별함. 소멸자 자바에서는 가비지컬렉터가 있어 소멸자가 없음 this() 같은 클래스 내의 다른 생성자 호출 class Box{ int width; int height; int depth; public Box(){ width=1; height=1; depth=1; } public Box(int w){ width = w; height =1; depth = 1;} public Box(int w, int h, int d){ widt.. 2022. 10. 11.
4-2 LED 저번시간에 FND 하나짜리를 컨트롤했었다. 이번에는 4개짜리 FND를 컨트롤 해보자. 1개짜리 FND는 9개 핀, 74595 IC를 이용했을 때 5개의 핀이 필요하다. 이번엔 4개짜리니까 36개 혹은 20개가 필요할까? 그건 아니다~ 4개의 digit이 있는데, 한 번에 하나의 digit만 불을 켤 것이다. 1번digit 켰다가 끄고 2번digit 켰다가 끄고 . ... 4번digit 켰다가 끄는 과정을 매우 빠르게 반복하면 인간의 눈으로는 1,2,3,4번 digit이 모두 켜져있는것 처럼 보인다.(잔상효과 때문) 4digit FND를 사용하여 0000, 1111, 2222 . . .9999 출력하기. LED A~G를 2~9번 핀에 연결한다.(330옴 저항과 함께 연결한다) 그리고 몇 번째 digit을 .. 2022. 10. 10.
3장 클래스,캡슐화, 다형성 class는 데이터 + 메소드의 수행까지 포함됨 main() 메소드는 JAP에 반드시 있어야 하는 특수한 메소드. 프로그램 실행 시 자동으로 실행되는 메소드. main()메소드는 String의 array를 argument로 받는다 (명령행 매개변수) args[0] 요런식 (String이기때문에 필요 시 변환해야함. ex: Integer.parseInt(args[0])) 캡슐화 Object를 작성할 때 숨겨야 하는 정보(private)와 공개해야 하는 정보(public)를 구분하여 작성. Object의 사용자는 기능만 알고 사용하며 어떻게 처리되는지는 은폐된다 (캡슐화) 캡슐화의 장점: object에 포함된 정보의 손상과 오용을 막을 수 있다. object 조작 방법이 바뀌어도 사용 방법은 바뀌지 않는다... 2022. 10. 9.
4장 - List 배열을 이용한 순서화 리스트: 임의의 위치에 대한 삽입과 삭제 연산이 곤란. 가변 길이의 순서화 리스트 지원 불가. 연결 리스트를 이용한 순서화 리스트: 리스트는 노드들로 구성, 각 노드는 데이터와 링크로 구성됨. 링크는 리스트의 다음 노드를 가리킴. (마지막 노드의 링크는 NULL) 단일 연결 리스트(Singly Linked Lists) 각 노드들은 메모리의 인접한 곳에 위치하지 않는다. 각 노드의 주소는 프로그램 실행시 매번 다를 수 있다. 리스트의 이름 = 첫 번째 노드의 주소가 된다. 배열에 비해) 삽입과 삭제시 기존 노드들의 위치를 변경할 필요가 없다 배열에 비해) 링크 필드를 위한 추가적인 메모리 공간이 필요하다 연결 리스트의 구현(C) struct node{ int data; struct n.. 2022. 10. 9.
728x90
반응형