반응형

분류 전체보기 429

[자료구조] 클래스

C++ 클래스와 추상 데이터 타입클래스는 사용자 정의 데이터 유형으로, 데이터 멤버와멤버 함수를 가집니다. 데이터 멤버는 데이터를 저장하는 필드이고, 멤버 함수는 이러한 변수를 조작하는 함수입니다.  class Person{public: string name; int age; void print() { cout name = "Bob"; ptr_person->age = 24; ptr_person->print(); return 0;}c언어의 struct와 class는 데이터 멤버의 포함이었지만 c++은 멤버 함수 또한 포함할 수 있습니다.  클래스가 멤버 함수를 가지고 있고 이 멤버 함수또한 데이터처럼 호출을 할 수 있습니다.  그리고 Person 객체를 동적 생성하고 객체의 주소를 저장하는 포인터 변수이..

[자료구조] 스택의 구현

스택 구현 방법 - 배열스택은 리스트 이기에 배열로 구성하는 방법입니다. char mystack[MAX_CAPACITY]; // 스택에 저장되는 데이터의 타입을 문자(char)라고 가정하자.int top_pos = -1;bool full() { return top_pos == MAX_CAPACITY - 1;}bool empty() { return top_pos == -1;}void push(char c) { if (full()) throw runtime_error("stack_full"); mystack[++top_pos] = c;}void pop() { if (empty()) throw runtime_error("stack_empty"); t..

자료구조 4장 스택(STACK)

스택이란?스택이란 일종의 리스트단, 데이터의 삽입과 삭제가 한쪽 끝에서만 이루어짐LIFO(Last-In, First-Out)삽입/삭제가 일어나는 쪽을 스택의 top이라고 부름스택이 지원하는 연산push : 스택에 새로운 원소를 삽입pop : 스택의 top에 있는 원소를 스택에서 제거top 혹은 peek : 스택 top의 원소를 제거하지 않고 반환empty : 스택이 비어있는지 검사size : 저장된 원소의 개수를 반환스택 응용 예 : 괄호 검사 문제입력 수식의 괄호가 올바른지 검사 예) [a + b * {c / ( d - e ) } ] + ( d / e )  단순히 여는 괄호와 닫는 괄호의 개수 비교 만으로는 부족해 스택을 이용해서 검사합니다.여는 괄호는 스택에 push닫는 괄호는 스택 top과 같은 유..

[오픈소스소프트웨어] chap 10-2 여러파일 구성

여러 파일로 구성된 프로그램 빌드하기$gcc -o calc calc.c eval.c stack.c token-c -lm일일이 타이핑하기 귀찮음과 매번 모든 소스 파일을 새로 컴파일해야 합니다. 이를 위한 대안으로 shell script를 이용하는 것입니다.$cat mybuildscriptgcc -o calc calc.c eval.c stack.c token.c -lm$./mybuildscript문제점하나의 파일만 수정한 경우에도 매번 모든 소스파일을 다시 컴파일규모가 큰 프로젝트의 경우 엄청난 시간 낭비새로 컴파일 할 필요가 이쓴 소스 파일만 자동으로 찾아서 컴파일해주는 기능이 필요make와 Makefile의존성 : 프로그램 빌드에는 순서가 있음가령 foo.c 파일이 bar.h 파일을 include 한다..

[오픈소스 소프트웨어] 10-2 프로그램 개발

다수의 소스 파일로 구성된 프로그램 개발c프로그램은 여러 개의 소스 파일로 구성됩니다. 관습적으로 각각의 소스 파일은 확장자.C를 가집니다. 하나의 소스파일은 main이라는 함수를 가져야 하며, 거기가 프로그램 실행의 하나지점입니다. 프로그램을 여러 개의 소스 파일로 분할할 경우 장점서로 연관된 함수들과 변수들이 하나의 파일에 있음으로써 프로그램의 구조가 좀 더 알기 쉽고 명료해진다.각각의 소스 파일들을 개별적으로 컴파일 할 수 있다.소프트웨어 재사용에 유리하다. 압출풀기  이러면 소스파일을 컴파일해서 실행파일을 만들어줍니다. 후위 연산식posftfix로 바뀌어진 다음에는 어떻게 계산하느냐입력 수식에서 연산자 혹은 피연산자를 한번에 하나씩 읽습니다.피연산자는 스택에 push합니다.연산자가 들어오면 스택으..

[오픈소스소프트웨어] chap10.1 C, C++ 개발

이건 Object 파일까지만 만드는 것입니다.  디버깅GNU 개발에서 공직적인 디버거는 gdb입니다..  컴파일 할 때 -g 옵션을 추가합니다.gcc -o test test.c -g 그런 다음 gdb 디버거를 실행합니다.gdb test gdbgdb는 텍스트 기반입니다. 쉘과 유사한 command-liune 인터페이스를 제공합니다. 명령어break : 브레이크 포인트 설정print: 변수 값 프린트c : 다음 브레이크 포인트까지 계속 실행next(n) : 한 줄 실행step (s) : 한 줄 실행(funcion 안쪽으로)backtrace (bt) : 함수 호출 스택 디스플레이run / start : 프로그램을 실행, start는 디버깅 실행 1부터 10까지 숫자를 한 라인씩 화면에 출력하는 count10...

[오픈소스소프트웨어] chap10.1 C, C++ 개발

소프트웨어 빌드소스 코드 파일로부터 실행가능한 프로그램 또는 라이브러리를 만들어가는 과정HELLO.C (Source file)compilehello.o (object file)Linkhello (executable File)리눅스에서 C/C++ 언어를 이용한 프로그램 개발에는 make 또는 autotools가 가장 널리 사용됩니다. JAVA의 경우 ant, gradle, maven이 주로 사용됨 IDE (Integrated Development Environment)IDE는 Build 기능을 겸하기도 하지만 주로 코드 개발에 초점을 맞춥니다. (코드 작성, 컴파일, 링크, 디버깅 등) 리눅스용  C / C++ IDE들KDevelop : 간단한 구성, 대규모 프로젝트에 적합Eclipse : 환경 구성이 복..

[오픈소스소프트웨어] chap 9.5 파일 속성 검사

복합조건  [...]내부 내에서 조건의 결합(not, and or)1. !expr : 부정, 즉 expr이 참이면 거짓, 거짓이면 참 file info의 스크립트 정수에 대한 조건 검사-lt : 작은(less than)-le : 작거나 같은 (less or equal)-eq : 같은 (equal)-ge : 크거나 같은(greater or equal)-gt : 큰(greater than)-ne : 같지 않은(not equal) 는 문자열의 lexicographic(사전식) 순서를 비교하는 연산이며 이는 정수의 크기 비교와 다릅니다.예를들어 6은 57보다 사전식 순서 비교에서 큽니다. for문  for var [in list]do $var를 사용하는 스크립트 코드done여기서 list는 문자열의 열(list..

[오픈소스소프트웨어] chap 9-2 쉘 변수

쉘 변수의 값지금까지 변수의 값을 꺼내기 위해 $varname을 사용했습니다. 하지만 보다 일반적인 방법은 ${varname}을해주어야 하는 것입니다. 이는 불필요한 에러를 줄여주기 때문입니다. 문자열 연산자를 이용하여 변수의 값을 다양한 방법으로 조작변수가 존재하는지 확인변수의 default값을 설정존재하지 않는 변수를 사용하려는 오류 적절히 처리변수 값의 일부를 패턴 매칭을 통해서 제거  변수 var이 존재하고 null이 아니면 word를 리턴 아니면 null을 리턴 4의 인덱스에서 이후 4번값까지 출력  실습1하지만 이 경우 문자로 해석하기 때문에 정상적으로 해석이 안됩니다. 이렇게 sort를 하면 됩니다.이렇게 하면 역순으로 출력이 됩니다.위에서 20개만 출력하도록 할 수 있습니다.  문자열 연산..

[오픈소스소프트웨어] 9.1 쉘 프로그래밍

쉘 프로그래밍쉘 + 리눅스 쉘 스크립트라는 텍스트 파일을 만들면 쉘이 실행하도록 만드는 것입니다. 그러면 쉘이 차례로 시작하게 됩니다. 이 쉘 스크립트 파일을 원하는 스크립트를 실행할 수 있도록 작성을 해야 하는데 그것을 쉘 프로그래밍이라고 부릅니다.  쉘 스크립트는 소스 파일을 만든다고 보시면 됩니다. 쉘 스크립트 만들고 실행하기 스크립트를 실행하는 4가지 방법ㅇ파일의 절대 경로명을 입력하여 실행쉘 프로그램을 명시하여 실행. ./ (dot space dot slash)를 이용하여 실행source 명령어를 이용하여 실행$ ./scriptfile$ /home/myaccount/scriptfile$ bash scriptfile$ . ./scriptfile$source scriptfilePATH에 추가 PAT..

반응형