Programming 기초
-
[Python 자료구조 #스택2] 스택을 이용한 중위표기 수식의 후위표기 변환Programming 기초/Python 2023. 5. 6. 14:55
* 후위표기 수식 계산 구현 def evalPostfix(expr): s = Stack() for token in expr: if token in "+-*/": val2 = s.pop() val1 = s.pop() if (token == '+'): s.push(val1 + val2) elif (token == '-'): s.push(val1 - val2) elif (token == '*'): s.push(val1 * val2) elif (token == '/'): s.push(val1 / val2) else: s.push(float(token)) return s.pop() * 연산자(Operator) 우선순위 반환 함수 def precedence(op):# op는 operator의 약자 if op == ..
-
[Python 자료구조 #스택1] 소스 파일에서 괄호 검사Programming 기초/Python 2023. 5. 6. 03:54
1. 스택을 클래스로 구현하고 2. 파일 내에서 괄호를 검사하는 checkBracketsV2() 함수를 정의. 3. 파일을 읽기모드로 열어서 줄 단위로 리스트를 만들고 4. 만들어진 리스트에 checkBracketsV2() 함수를 호출하여 검사한다. 아래 코드블럭에서는 소스파일 대신 txt파일을 불러왔다. class Stack: def __init__(self): self.top = [] def __str__(self): return str(self.top) def isEmpty(self): return len(self.top) == 0 def size(self): return len(self.top) def clear(self): self.top = [] def push(self, item): self..
-
C언어 기초#14 동적 메모리와 연결 리스트Programming 기초/C Language 2023. 5. 3. 19:49
* 동적 할당 메모리 프로그램이 메모리를 할당받는 방법에는 정적과 동적의 2가지 방법이 있다. 정적 메모리 할당(static memory allocation)이란 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는 것이다. 이 경우, 메모리의 크기는 프로그램이 시작하기 전에 결정되며 프로그램의 실행 도중에 크기가 변경될 수는 없다.int score_s[100]; //배열을 선언하면 정적으로 메모리 할당받는다.동적 메모리 할당(dynamic memory allocation)이란 프로그램이 실행 도중에 동적으로 메모리를 할당받는 것을 말한다. 필요한 만큼의 메모리를 할당받아 사용하고, 메모리를 반납한다.score = (int *) malloc(100*sizeof(int)); 그렇다면 동적 할당이 ..
-
C언어 기초#13 스트림과 파일 입출력 printf scanf 심화, fopen(), fclose(), 이진 파일 읽고 쓰기, 버퍼링, fseek(), rewind(), ftell(), foef()Programming 기초/C Language 2023. 5. 3. 19:20
* 스트림(stream) 스트림이란 모든 입력과 출력을 바이트(byte)들의 흐름으로 생각하는 것. 장점 : 장치 독립성. 입출력 장치에 상관없이 프로그램을 작성할 수 있다. 특징 : 버퍼(buffer) 사용. cpu의 속도가 입출력 장치보다 훨씬 빠르기 때문에 버퍼에 어느 정도 데이터가 쌓이면 cpu가 한 번에 데이터를 가져간다. 출력도 마찬가지. * 표준 입출력 스트림(standard input/output stream) 프로그램이 시작될 때 자동으로 만들어지고, 프로그램이 종료될 때 자동으로 소멸된다. 이름 스트림 연결 장치 관련 함수 예시 stdin 표준 입력 스트림 키보드 scan() stdout 표준 출력 스트림 모니터의 화면 printf() stderr 표준 오류 스트림 모니터의 화면 fpr..
-
C언어 기초#12 전처리 및 비트 필드Programming 기초/C Language 2023. 4. 28. 17:04
* 전처리기(preprocessor) 본격적으로 컴파일하기에 앞서 소스 파일을 처리하는 컴파일러의 한 부분. 전처리기는 보통 컴파일러에 포함되어 있고 자동으로 실행되며 컴파일러의 하나의 요소로 취급됨. 전처리기는 소스 파일을 처리하여 수정된 소스 파일을 생산한다. 전처리기는 몇 가지의 전처리기 지시자들을 처리한다. 이 지시자들은 #기호로 시작한다. e.g) #include 하나의 프로그램이 만들어지기까지의 과정은 위의 그림과 같다. 두 번째 단계에 해당하는 컴파일러의 내부를 살펴보면 아래 그림과 같이 전처리기와 컴파일러가 있다. (오브젝트 파일은 기계어로 번역된 파일이다.) * 단순 매크로(macro) #define 지시자를 이용하면 숫자 상수에 의미 있는 이름을 부여할 수 있다. #define 문을 이..
-
[Python 기초 #10] 예외 처리Programming 기초/Python 2023. 4. 27. 16:54
* try try: ... except [발생 오류[as 오류 메시지 변수]]: ... else: # 오류 발생하지 않은 경우 실행 (try가 참값일 때) ... finally: # 무조건 마지막에 실행 여기서 [ ] 기호는 괄호 안의 내용을 생략할 수 있다는 관례 표기법이다. except 발생 오류: 는 오류가 발생했을 때 except문에 미리 정해 놓은 오류 이름과 일치할 때만 except 블록을 수행한다는 뜻이다. except 발생 오류 as 오류 메시지 변수: 는 오류메시지의 냉요을 알고 싶을 때, 발생오류를 지정한 오류 메시지 변수에 담는 것이다. try: 4/0 except ZeroDivisionError as e: print(e) ----------------------------------..
-
[Python 기초 #9] 패키지Programming 기초/Python 2023. 4. 27. 15:45
* 패키지(Packages) 도트(.)를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다. * 패키지 만들기 예) game 패키지의 구조 game/ _ _init_ _.py sound/ _ _init_ _.py echo.py wav.py graphic/ _ _init_ _.py screen.py render.py play/ _ _init_ _.py run.py test.py 여기서 gmae, sound, graphic, play는 디렉터리 이름이고 확장자가 .py인 파일은 파이썬 모듈, game 디렉터리가 이 패키지의 루트 디렉터리이고 sound, graphic, play는 서브 디렉터리이다. 1. 서브 디렉터리(폴더)를 만들고 빈 파일의 모듈을 만들어 놓는다. 2. echo모듈..
-
[Python 기초 #8] 모듈Programming 기초/Python 2023. 4. 25. 19:56
* 모듈 모듈이란 함수나 변수 또는 클래스를 모아 놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다. 파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈이다. * import 이미 만들어 놓은 파이썬 모듈을 사용할 수 있게 해주는 명령어이다. 예로, mod1.py 파일에 있는 add 함수를 사용하기 위해서는 mod1.add처럼 모듈 이름 뒤에 '.'(도트 연산자)를 붙이고 함수 이름을 쓰면 된다. 모듈 이름 없이 함수 이름만 쓰고 싶은 경우에는 'from 모듈 이름 import 모듈 함수1, 함수2, ...'를 사용하면 된다. ' from 모듈 이름 improt * '로 *문자를 사용하면 해당 모듈의 모든 함수를 불러서 사용한다는 뜻이다. <..