프로그래밍 언어 공부 20

함수 포인터(Function Pointer)

함수 포인터란? - 함수의 주소를 저장하는 변수 필요성 프로그램 코드 간결화 배열로 처리함으로써 중복 코드 제거 가능 상황에 따른 함수 호출 함수를 데이터 형태로 처리 → 함수의 보관과 전달이 용이 형식 - 리턴 타입 (*함수 포인터명)(매개변수 리스트); 1. 리턴과 매개변수가 없는 함수에 대한 함수 포인터 #include void hello() { printf("Hello, world!\n"); } void good() { printf("Good morning!\n"); } int main() { void (*fp)(); // 함수 포인터 선언(리턴타입void, 매개변수 없음) fp = hello; // hello 함수 시작 주소를 대입 fp(); // 함수 포인터로 호출 fp = good; // g..

동적 메모리

" 10칸의 전철이 있다. 평균 승객의 수를 고려한다면 4칸 정도만으로도 충분히 승객을 태울 수 있다. 만약 승객의 수에 따라서 전철 칸 수를 늘리고 줄일 수 있다면 효율적인 운행이 가능해진다. 프로그램 메모리에도 필요에 따른 크기 할당이 가능한 것이 바로 동적 메모리 이다. " 동적 메모리 이해 특 징 정적 메모리 동적 메모리 메모리 할당 컴파일 단계에 이루어짐 실행 시간에 이루어짐 메모리 해제 자동으로 해제 명시적으로 해제 필요 사용 범위 지역 변수는 선언된 블록 내, 전역 변수는 프로그램 전체에서 사용할 수 있음 프로그래머가 원하는 동안 만큼 사용할 수 있음 메모리 관리 컴파일러의 책임 프로그래머의 책임 개요 1. 데이터의 갯수를 미리 알 수 없을 때 사용 2. 처리 대상 데이터가 유동적일 때, 특..

수학 관련 라이브러리

어려운 계산식을 직접 만들지 않고, 만들어놓은 라이브러리를 사용할 수 있다. 종류 1. 삼각함수 cos cosine 값 연산 sin sine 값 연산 tan tangent 값 연산 acos arc conie 값 연산 asin arc sine 값 연산 atan arc tangent 값 연산 atan2 매개변수가 2개인 arc tangetn 값 연산 2. 지수, 로그 함수 exp 지수 연산 log 자연로그 연산 log10 상용로그 연산 3. 제곱함수 pow 거듭제곱 연산 sqrt 거듭제곱근 연산 4. 반올림함수 ceil 올림연산 round 반올림 연산 floor 내림연산 5. 최대값, 최소값 함수 fmax 매개변수 중 최대값 반환 fmin 매개변수 중 최소값 반환 6. 절대값 함수 abs 정수의 절대값 연산..

도서관리 시스템 구현

도서관리 프로그램이란? - 도서명과 저자 등의 정보를 저장하고 저장된 도서 목록 전체를 출력하거나 찾고자 하는 도서를 제목과 저자 정보로 검색하여 결과를 출력하는 프로그램을 개발 프로그램 구현 시 처리 대상 자료 { 도서명, 가격, 저자, 판매수량 } 기능 정의 항 목 내 용 메뉴 도서 입력, 도서 출력, 도서 검색, 종료 기능 도서 입력, 출력, 제목 검색, 저자 검색 요구사항 - 메뉴 방식으로 작업 선택 - 종료 메뉴 추가 - 책 제목 최대 50글자까지 입력 가능 - 저자명 최대 20글자까지 입력 가능 - 검색: 제목 검색, 저자 검색 - 최대 100권 관리 기능 자료구조 정의 자 료 도서명 char bookTitle 저자 char bookAuthor 가격 int bookPrice 판매수량 int b..

문자 처리 라이브러리

문자 관련 입출력 함수 getc() putc() int getc( FILE *stream); - 지정한 스트림으로 부터 문자 읽기 - 입력문자 ASCII코드 값을 리턴, 오류 시에는 EOF 리턴 int putc(int ch, FILE *stream); - 지정한 스트림에 지정한 값을 출력 - 정상 출력 시 출력문자 리턴, 오류 시는 EOF 리턴 _getch() _getche() _putch() (conio.h에 포함) int _getch(void); int _getche(void); - 키보드로부터 입력되는 문자를 읽음 - 입력 문자의 ASCII코드를 리턴 - _GETCHE() 는 echo를 사용 - 버퍼를 사용하지 않는 입력 int _putch(int ch); - 화면에 지정한 값을 출력 - 정상 출력..

라이브러리(Library)

늦음 밤에 허기를 달래기 위해서 편의점을 갈 수 있고, 직접 만들어 먹을 수도 있다. 편의점은 바로 만들어 먹을 수 있고, 아니면 내 입맛에 맞게 직접 만들어 먹을 수도 있다. 코딩도 마찬가지로 내가 직접 코딩을 할 수도 있고, 이미 만들어져 있는 코드(라이브러리)를 사용할 수도 있다. 라이브러리 이해 정의 서브루틴이나 함수들이 저장된 파일들의 모음 보통 컴파일된 형태인 목적코드 형태로 존재 프로그램에서 공통 사용 가능한 기능을 포함하고 있는 오브젝트 파일 사용자의 프로그램과 링크되어, 실행이 가능한 완전한 프로그램 사용 이유 - 자주 사용되는 특정한 기능을 main 함수에서 분리해 놓음. ex) printf(), scanf() 등등 ㅁ 프로그램 유지 ㅁ 쉬운 디버깅 ㅁ 컴파일 시간 단축 분류 - 정적 ..

어플리케이션 최적화(Application Optimization)

최적화란? - 정보공학에서 시스템을 수정하여 어떠한 면의 작업을 더 효과적으로, 또는 자원을 덜 사용하도록 만드는 작업 컴퓨터 프로그램은 더 빠르게 실행되거나 기억 장치 또는 자원을 덜 차지하게 하여 운영하도록 개선 유지보수의 편의성을 고려한 코드 개선 안정성 확보를 위한 최적화 최적화 기법 - 성능 체크 : 최적화 대상 선정 - 코드 분석 : 최적화 향상 병목지점 찾기 (소요시간) 구조체 복사 시 대입연산자 대신 라이브러리 함수를 이용 구조체 전달은 포인터를 이용 함수의 매개변수를 축소 (4개 이하: 레지스터 이용, 4개 이상: 스택 이용) 4Byte 이상 전달 시 포인터를 이용 4개 이상인 경우 인자를 구조체로 선언하고 구조체 포인터를 매개변수로 전달 const를 적절히 활용 (안정성 확보 차원) 2..

디버깅(Dubugging)

디버깅(Debugging)이란? - 프로그래밍 과정 중 발생하는 오류나 비정상적인 연산과 같은 버그를 찾고 수정하는 과정 정의 버그(Bug) == 프로그램 과정 중 발생하는 오류 - 오타로 인한 오류 - 문법적인 오류 - 논리적인 오류 - 잘못된 라이브러리 사용 - 시스템상의 한계로 인한 오류 디버거(Debugger) == 디버깅을 수행하는 프로그램(통합 개발환경에 내장) == IDE(Visual Studio, Code Blocks) - 수행 기능 변수값 추적 중단점 지정 모듈 단위 실행 - 디버깅 방법 한 문장씩 수행 모듈 단위로 나누어서 수행 * 디버깅을 시작 후 필요에 따라 변수값을 지정하여 해당 변수의 변화되는 과정을 추적하는 것이 가능함 * 디버깅 시 중단점을 지정하여 특정 지점까지 문장을 수행..

컴퓨터 언어 종류

C 언어 절차지향 언어 어셈블리어와 고급 언어의 장점을 가지고 있음 작고 빠른 프로그램 뛰어난 이식성(하드웨어까지 제어 가능) 컴파일러 언어 역사 1972년 - 벨 연구소의 데니스 리치에 의해 개발 - UNIX 개발을 위해 개발 1989년 - ANSI C 발표 특징 - 하드웨어 제어 가능 - 범용 프로그래밍 - 효율적 자료 관리 및 메모리 관리 주사용 분야 - 시스템 프로그램(운영체제, 디버깅 S/W, 미들웨어) : 비트 조작, 메모리 접근, 형 변환 - 컴파일러, 유틸리티 - 응용 프로그램(게임, 워드프로세서, 오라클) - 임베디드 프로그래밍(전자 제품, 로봇 등) C++ 언어 객체지향 언어로 C언어의 확장판 다중 상속, 오버로드 컴파일러 언어 역사 1983년 - 벨 연구소의 비야네 스트롭스트룹이 발표..

컴퓨터 언어 개요

컴퓨터 언어란(Computer Language)란? - 컴퓨터를 이용하여 특정 작업을 수행하고자 할 때 컴퓨터에 전달하는 작업 지시서 - 명령어들의 집합 프로그래밍(Programming)이란? - 작업 지시서를 미리 약속된 규칙과 문법을 이용하여 기술하는 행위 프로그래밍 언어 분류 * 사용자 측면에서의 종류 Low Level Language - 바이너리 코드를 이용 Middle Level Language - Assembly Language 기계어에 가깝지만 인간이 사용하는 단어가 있음 High Level Language - 인간이 이해하기 쉽도록 짜여진 코드를 이용 * 실행 측면에서의 종류 - 컴퓨터가 직접 실행하거나 매개체를 이용하여 실행 1. 컴파일러 언어(Compiled Language) 예: C,..