본문 바로가기
728x90
반응형

2022-286

3장 - C프로그래밍 환경 문서 편집: vi편집기 vi의 동작모드 명령모드: (ESC,ENTER) 커서이동,페이지이동,글자삭제,줄 삭제 등 입력모드: i,I,a,A,o,O 마지막행 모드: (/,?,:) 검색, 저장, 바꾸기,줄 이동 등 저장 및 종료명령 :w [파일명] : 저장, 파일명을 지정할 시 지정한 파일명으로 저장 :q! 저장하지 않고 종료 :wq! 저장하고 종료 ZZ 저장하고 종료 내용 삭제 및 취소 x 문자삭제 D 커서 위치부터 줄 끝까지 삭제 u 방금 수행한 명령 취소 dd 현재 줄 잘라내기 복사, 잘라내기, 붙이기 yy 현재 행 복사 p 붙여넣기 범위지정 방법 % 모든 줄 1,$ 첫 줄에서 마지막 줄까지 .,$ 현재 줄에서 마지막 줄까지 10,20 뭐 요런식.. 검색 기능 /문자열 : 현재 위치부터 파일의 아래 방향.. 2022. 10. 7.
2장 - 리눅스 사용 기본 명령어 date hostname: 호스트 이름 확인 uname: 운영체제 확인 whoami: 사용자 정보 확인 whatis 명령어 : 명렁어에 대한 간단한 설명 2.2 파일 및 디렉토리 파일의 종류 일반 파일 디렉토리 파일: 디렉토리 파일의 내용은 디렉토리가 가지고있는 파일,디렉토리인가봄 특수 파일: 물리적인 장치에 대한 내부적인 표현(프린터 출력 -> 프린터 파일에 쓰기 연산 수행) 디렉토리 계층구조 리눅스 디렉토리는 루트로부터 시작, Tree형태의 계층구조를 이룬다. 디렉토리 관련 명령 pwd cd which 명령어: 명령어의 절대경로를 보여준다. mkdir 디렉토리 mkdir -p 디렉토리: 필요한 경우 중간 디렉토리를 자동으로 만들어준다. mkdir ~p ~/dest/dir1 => dest디.. 2022. 10. 7.
1장 - 유닉스 리눅스 소개 유닉스 운영체제 구조 하드웨어)커널)쉘)유틸리티 파일시스템) 커널 하드웨어를 운영 관리. 프로세스, 메모리, 파일, 주변장치, 통신 등을 관리하는 서비스 제공 -프로세스 관리: 여러 프로그램이 실행될 수 있는 환경 제공. CPU 스케줄링을 통해 여러 프로세스들이 동시에 수행되도록 함 -메모리 관리: 메인 메모리가 효과적으로 사용될 수 있도록 관리 -주변장치 관리: 모니터,키보드,마우스와 같은 장치를 사용할 수 있도록 관리 쉘 -사용자와 커널 사이의 중간자 역할 담당(사용자 인터페이스) -명령어 처리: 사용자가 입력한 명령을 이해하여 실행. (명령어 해석기) 쉘의 종류: 본쉘(sh), C쉘(csh), 콘쉘(ksh), 배시쉘(bash) 파일 시스템 및 유틸리티 유틸리티/명령어: 사용자가 사용하는 여러 응용 .. 2022. 10. 7.
Digital Transmission (1) 저번 시간에 Data, Signal을 알아봤다 데이터는 아날로그,디지털로 나눠지고 시그널도 아날로그,디지털로 나눌 수 있다 그러면 데이터를 시그널로 전송하는 방법은 Digital data -> Digital Signal Digital data -> Analog Signal Analog data -> Digital Signal Analog data -> Analog Signal 네 가지 방법이 있을거 같다. 이번 시간에는 Digital data -> Digital Signal에 대해 알아보자. (참고로 Digital - Digital은 유선 랜wired LAN 통신에서 사용한다고 함) Line Coding 회선 부호화 0과1의 디지털 데이터를 -> 0과1의 디지털 시그널로 변환하기. 예를들면 디지털 데이터.. 2022. 10. 7.
4장 - LED LED (Light Emitting Diode) 기존의 형광등보다 효율이 좋다. Anode(양극), Cathode(음극) 구분이 있으며 보통 다리가 긴 쪽이 양극임. 회로 연결 시 저항을 연결하지 않으면 과전류가 흘러 회로가 탈 수 있음 LED를 켜고/끄는 동작을 하기 위한 함수 digitalWrite(핀번호,HIGH/LOW) : 켜고 끄는 동작만 가능하며, 이 함수를 쓰기 위해선 pinMode(핀번호,OUTPUT) 세팅을 해줘야함 LED 밝기 조절(Dimming) 1. 전류 양을 조절, 가변저항을 사용하여 저항값을 낮춰주는 방법 2. PWM(Pulse Width Modulation) 방법: LED에서 HIGH - LOW를 매우 빠르게 스위칭 하면서 빛의 세기를 조절함. (아두이노에서 PWM을 지원하는 .. 2022. 10. 6.
3장 - 수식 계산(Evaluation of Expressions) Precedence : 연산자들 간의 우선 순위(*연산이 +연산보다 우선순위 높음) Associativity: 동일한 우선순위를 갖는 연산자들간의 실행 순서 (ex: +,-,*,/ - >left to right) 중위 표기법(Infix notation) : 피연산자들 사이에 연산자가 위치함. 사람이 쓰는 방식. 계산 과정이 복잡하다 후위 표기법(Postfix notation) : 피연산자들 다음에 연산자가 위치. 괄호가 필요 없고 한번의 스캔으로 수식 계산 가능 중위표기법 3+4*2 ==> 후위표기법 342*+ (a/(b - c + d) ) * (e - a ) * c ==> abc-d+/ea-*c* Postfix 수식의 계산 앞에서부터 차례대로 피연산자(숫자)는 스택에 저장, 연산자의 경우 스택에서 숫자.. 2022. 10. 6.
3장 - 미로찾기(Stack 이용) #include #define MAX_STACK_SIZE 100 #define M 10 #define P 10 #define EXIT_ROW 10 #define EXIT_COL 10 int maze[M + 2][P + 2]; //미로 int mark[M + 2][P + 2]; //방문기록용 typedef struct { short int x; short int y; }offsets; offsets move[8]; //8개의 방향을 배열에 넣어놓고 쓸 것임 typedef struct { short int row; short int col; short int dir; }element; element stack[MAX_STACK_SIZE]; //지나간 경로를 저장할 스택 void path(void) {//미로.. 2022. 10. 5.
Data and Signal Analog and Digital Data 아날로그 데이터 사람의 목소리를 생각해보면 저음-고음 사이의 수많은 높낮이를 모두 표현 가능하다. 아날로그 데이터는 연속적인 값을 가지고, 무한한 값들을 표현 가능하다. 디지털 데이터 0과 1을 가지는 이진수로 표현하기 때문에, 0과 1 사이에 있는 값을 가질 수 없다. 디지털 데이터는 이산적인 값만 표현 가능하다. 데이터를 전송하기 위해서, 데이터는 전기적 신호(시그널)로 변환되어야 한다. 이 때, 데이터를 신호로 변환해 주는것이 부호기(encoder)이다. Analog and Digital Signal 아날로그 시그널 연속적이고, 무한한 값들을 표현 가능함 디지털 시그널 이산적, 제한된 수의 값만 표현 가능함 Periodic and Non-periodic S.. 2022. 9. 30.
3장 - 스택(Stack)과 큐(Queue) 순서화 리스트의 종류 중 스택,큐가 있다. 스택(Stack) 삽입과 삭제가 'top'이라 불리는 한 쪽 끝 지점에서 발생하는 순서화 리스트 시스템 스택(Run-time Stack) 시스템에서 함수 호출을 처리하기 위해 사용 재귀함수 호출의 성능과 관련 스택의 구현 #include #define MAX_SIZE 101 typedef struct { int key; }element; element stack[MAX_SIZE]; int top = -1; //top을 -1로 초기화하였음. bool IsEmpty() { if (top = MAX_SIZE - 1) return true; else ret.. 2022. 9. 30.
3. LCD Display 우리가 어떻게 LCD를 컨트롤 할것인가? 8bit = 1Byte 글자 한 개를 표현하는 데 8비트가 필요하다. (글자-비트 표를 보고 어떤 글자가 이진수로 어떻게 표현되는지 알 수 있음) 3.1) LCD module using input/output pins 5V,GND핀을 각각 Vcc, G핀에 연결한다 RS,E,D4,D5,D7 핀을 아두이노 2,3,4,5,11,12핀에 연결한다 LCD 라이브러리 제공 함수 LiquidCrytral lcd(rs,enable,d4,d5,d6,d7) : LiquidCrytral형 객체를 생성함 lcd.begin(column,row): LCD 크기를 지정함 lcd.clear() : 커서를 맨 위 왼쪽으로 옮기고 내용 삭제 lcd.home() : 커서를 맨 위 왼쪽으로 옮김 l.. 2022. 9. 28.
2장 - 다차원 배열, 배열의 주소 다차원 배열을 저장하는 방법은 두 가지가 있다. 1. 행 우선 순서(Row major order) 2. 열 우선 순서(Column major order) 행 우선 순서의 경우 A[2][4]라는 배열 안에 A[0][0] A[0][1] A[0][2] A[0][3] A[1][0] A[1][1] A[1][2] A[1][3] 순서로 저장되어 있는 것이고,(인덱스를 보면 행을 기준으로 오름차순 정리되어있다) 열 우선 순서의 경우는 A[0][0] A[1][0] A[0][1] A[1][1] A[0][2] A[1][2] A[0][3] A[1][3] 순서로 저장되어 있는 것이다.(인덱스를 보면 열을 기준으로 오름차순 정렬되어 있다) 행 우선 순서의 주소 계산 A[5][7][6] 크기의 배열이 있다고 하자 A[0][0][0.. 2022. 9. 28.
2장 - 희소행렬의 곱 C언어 구현 #include #include #define MAX_TERMS 101 #define MAX_COL 50 #define COMPARE(a,b) (a 0) { for (i = 0; i < num_col; i++) { row_terms[i] = 0; //배열 초기화 } for (i = 0; i 2022. 9. 28.
2장- 희소행렬의 전치 C언어 구현 모든 원소를 반복해서 돌면서 col 오름차순으로 찾아 B에 넣는 방식 #include #define MAX_TERMS 101 typedef struct { //term[0]에는 행 수, 열 수, 원소 수가 들어가고 이후부터 행,열,값임 int row; int col; int value; }term; term a[MAX_TERMS]; void transpose(term a[], term b[]) { //a행렬을 전치하여 b행렬에 저장 int count = a[0].value; //원소의 개수 int i, j, currentb; b[0].row = a[0].col; b[0].col = a[0].row; b[0].value = a[0].value; if (count > 0) { //원소가 존재하는 경우 cur.. 2022. 9. 28.
자바 - 명령행 매개변수, 클래스, 클래스 상속, 클래스 배열 명령행 매개변수(command-line argument) main()메소드의 매개변수는 String args[] 프로그램에 입력한 값을 순서대로 args[]배열에 저장한다. 명령행 매개변수를 사용할 때는 x=Integer.parseInt(args[0]); 이런 식으로 사용할 수 있다. (이 예시는 args[0]을 정수형으로 저장하기위해 Integer.parseInt 사용) 기본적으로 String타입이기 때문에 다른 자료형으로 사용할 때에는 변환을 해 줘야 한다. public class q02 { public static void main(String[] args) { float sum; sum=0; for(int i=0;i 2022. 9. 27.
자바 - 객체 복사 참고사항 class Fruit{ int apple=5; int straw=10; int grapes=15; } public class Test5 { public static void main(String[] args) { Fruit f1 = new Fruit(); Fruit f2 = f1; f1.apple=500; System.out.println("f1"); System.out.println(f1.apple+" "+f1.straw+" "+f1.grapes); System.out.println("f2"); System.out.println(f2.apple+" "+f2.straw+" "+f2.grapes); } } Fruit 클래스의 객체 f1을 생성하고 f2=f1을 했다 f1의 멤버변수를 변경하고 f1, f2의 .. 2022. 9. 25.
자바 실습 - 방 배정 import java.util.Scanner; public class Example0922 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int room=0; int house[][]; house = new int[5][5]; //배열 초기화 for(int i=0;i 2022. 9. 25.
Protocol, Layer, and TCP/IP Protocol Model Protocol? 프로토콜이 뭘까 간단하게 '통신 규약'이라고 할 수 있겠다. (컴퓨터에서 데이터를 주고받는 규칙) 규칙은 왜 필요한데? 세계 각국 여러 회사에서 만드는 장비는 수도 없이 많다. 표준이 없으면 여러 장비들 간에 커뮤니케이션이 힘들기 때문에 프로토콜은 필요하다. Application Transport Network Data Link Physical TCP/IP Protocol Model을 간단하게 표현 해 봤다 5개 층으로 이루어진 5 layer system이다. 왜 레이어를 여러개로 나누었을까? 세분화함으로써 얻는 장점은 1. 복잡성이 낮다(코드 수정 등의 유지보수 용이) 2. 유연성이 높다(한 레이어만 교체하는 등) 등이 있다. 전송시 가장 위에 있는 Application부터 Physi.. 2022. 9. 25.
2장 - 희소 행렬(Sparse Matrix)의 표현 행렬에 0이 많이 포함된 경우에 희소행렬이라고 한다. 배열에 희소행렬을 그대로 표현할 경우 공간낭비가 심하게 된다. 낭비되는 공간을 줄이기 위한 방법은 어떤게 있을까? 이차원 배열에 표현된 희소행렬을 (행,열,값)으로 묶어 표현하는 방법이 있다 1 0 0 0 0 5 0 0 0 이런 배열일 있다고 하자. 이 때 (행,열,값)으로 묶어 표현하면 [(0,0,1),(1,2,5)] 로 적을 수 있겠다. 근데 이 방법이 항상 효율적인건 아니다. n*n의 행렬이 있을 때, 0이 아닌 값이 k개 있다고 하자 2차원 배열로 행렬을 그대로 표현하면 n^2의 공간이 필요할 것이며 (행,열,값)으로 묶어 표현하면 3*k의 공간이 필요할 것이다. 이 방법이 효율적일 때는 k 다음시간에 계속.. 2022. 9. 25.
2장 - 다항식의 덧셈 구현하기 C언어에서 다항식을 구현하는 방법 방법1: 모든 지수의 계수들을 내림차순으로 저장 #define MAX_DEGREE 101 typedef struct{ int degree; float coef[MAX_DEGREE]; }polynomial; 예시) 2x^3 + x^2 -1 [3, (2,1,0,-1)] [최고차항 지수, (계수들 순서대로)] 또다른 예시로 x^100 +1이라는 식이 있을 때, 이 방법으로 저장하기 위해선 [100,(1,0,0,0,0.....0,0,0,0,1)]을 저장해야하는데, 계수가 0인 항이 많은 경우 메모리 낭비가 심하다. 방법 2: 지수와 계수를 모두 저장 #define MAX_TERMS 100 typedef struct{ float coef; int expon; }polynomial.. 2022. 9. 25.
배열과 구조체, 공용체, 순서리스트 배열 첨자(index)와 값(value)의 쌍들의 집합. int list[5]; int *plist[5]; list[0]의 주소 = a라고 가정 list[1]의 주소 = a + sizeof(int) 배열을 인자로 전달 시 배열의 시작주소가 복사됨. (Call by reference) 배열의 동적 할당. int *A = (int*) malloc(sizeof(int)*100); int *B = (int*) calloc(100,sizeof(int)); 같은 동적할당이지만 malloc은 쓰레기값이 들어있고 calloc은 0으로 초기화된다 A = (int*) realloc(A,sizeof(int)*200); 용량을 늘리고싶어 재할당을 했다. 이때 메모리상에 원래크기의 배열A 뒷부분에 공간이 없다면..? 새로 할당.. 2022. 9. 21.
728x90
반응형