728x90
- 프로그래밍 언어별 특성
- 컴퓨터 언어 개요
- 컴퓨터 언어를 실행방식의 측면에서 구분하면 크게 컴파일러 방식과 인터프리터 방식으로 구분됨
- -인간 중심과 기계 중심에 따라 고급과 저급언어로 구분됨
- -프로그래밍이란 컴퓨터를 이용하여 특정한 작업을 할 수 있도록 명령서를 기술하는 작업
- 컴퓨터 언어 종류
- -C++은 C언어의 확장으로 객체지향 언어-JAVA는 더욱 더 완벽한 객체지향 프로그램으로 웹 응용 프로그램 개발에 용이한 언어
- -Python은 익히기 쉽고 다른 언어와 혼합하여 사용할 수 있는 언어
- -C#은 인터넷과 같은 분산 환경 프로그래밍에 적합한 언어
- -C언어는 절차지향언어로 시스템 프로그램 개발에 용이한 언어
- 컴퓨터 언어 개요
- 디버깅
- 디버깅 개요
- -디버깅(Debugging)은 프로그래밍 과정 중에 발생하는 오류나 비정상적인 연산과 같은 버그를 찾고 수정하는 과정
- -디버깅은 모듈 단위로도 디버깅을 할 수 있음
- -버그란 프로그래밍 과정 중에 발생하는 오류를 말함
- 디버깅 수행하기
- -디버깅을 시작 후 필요에 따라 변수값을 지정하여 해당 변수의 변화되는 과정을 추적하는 것이 가능함
- -디버깅 시 중단점을 지정하여 특정 지점까지 문장을 수행하는 것이 가능함
- -대부분의 IDE는 디버깅 기능을 내장하고 있음
- 디버깅 개요
- 애플리케이션 최적화
- Optimization
- -유지보수의 편의성을 고려한 코드 개선도 포함됨
- -안정성 확보도 코드 최적화 기법 중 하나에 해당됨
- -최적화란 프로그램이 최소의 자원 사용으로 최소 시간에 수행될 수 있도록 코드를 개선하는 과정을 말함
- 최적화 작업하기
- -4바이트 이상의 매개변수는 포인터로 전달함
- -여러 개의 다른 데이터 형의 매개변수는 구조체로 전달함
- -여러 개의 동일한 데이터 형의 매개변수는 배열로 전달함
- -실수연산보다 정수연산이 더 빠름
- Optimization
- 라이브러리
- 라이브러리 개요
- -프로그램 개발 시 자주 사용되는 코드를 라이브러리화하여 재사용할 수 있음
- -공유라이브러리는 하나의 프로그램에서 적재되어 사용되면 이후 필요로 하는 다른 프로그램에서 바로 사용하는 것이 가능함
- -동적 라이브러리는 프로그램이 실행되고 적재되는 라이브러리
- -정적 라이브러리는 컴파일 시 적재되는 라이브러리
- -라이브러리는 함수나 모듈의 집합
- 사용자 정의 라이브러리
- -모듈을 만들어 컴파일 후 라이브러리화하여 다른 프로그램에서 호출하여 사용할 수 있음
- -프로그래머가 필요에 의해 라이브러리를 만들 수 있음
- 라이브러리 개요
- 문자처리 라이브러리
- 문자 문자열 입출력
- -문자를 출력할 때 사용 가능한 표준 C라이브러리 함수로 putc(), putchar()가 있음
- -getche()는 에코(echo)를 사용하여 사용자가 입력한 내용을 화면에 보여줌
- -문자열을 입력받는 표준 라이브러리 함수는 gets(), gets_s()가 있음
- -버퍼를 사용하지 않는 입력 라이브러리 함수로 _getch(), _getche()가 있음
- -문자를 입력받을 때 사용 가능한 표준 C라이브러리 함수로 getc(), getchar()가 있음
- 문자 문자열 처리함수
- -isalpah()는 알파벳 문자 여부를 판단하여 리턴함
- -strcpy() 함수는 null을 포함하여 복사함
- -strcmp() 함수는 동일한 경우 0을 리턴함
- -strlen() 함수는 문자열에서 null을 제외한 문자열의 길이를 리턴함
- -대표적인 문자나 문자열을 처리하는 라이브러리 함수를 선언한 헤더파일은 ctype.h와 string.h가 있음
- 문자 문자열 입출력
- 도서관리 시스템
- 프로그램 설계
- -프로그램의 기능 수행을 위한 요구분석을 주의 깊게 수행해야 함
- -프로그램 개발 시 처리할 자료에 대한 자료구조 정의는 매우 중요함
- 코드 분석
- -라이브러리 함수는 해당 헤더 파일을 선언 후 사용
- -strcmp() 함수는 문자열을 비교하고 다른 경우는 true를 반환
- -라이브러리 함수 사용 시, 함수의 반환 값 매개변수 등을 정확히 확인 후 사용
- 프로그램 설계
- 수학 관련 라이브러리
- 라이브러리 함수 이해
- -대표적인 수학 관련 라이브러리 함수로 제곱, 반올림, 최대값, 최소값, 절대값 등을 연산하는 함수들이 있음
- -수학과 관련한 라이브러리 함수는 math.를 include 해야 함
- 라이브러리 함수 활용
- -라디안 값 : degree*PI/180-반올림함수 외에 올림, 내림을 수행하는 함수도 있음
- -C언어에서 절대값은 정수와 실수 매개변수에 따라 구분되어 사용됨
- -지수함수의 기본함수 : exp()
- -삼각함수는 매개변수로 라디안 값을 전달해야 함
- 라이브러리 함수 이해
- 문자 분류 데이터 변환 관련 라이브러리
- 라이브러리 함수 이해
- -문자열의 길이를 반환하는 함수 : strlen()
- -문자열을 연결하는 함수 : strcat, strncat
- -문자열을 복사하는 함수 : memcpy, memmove, strcpy, strncpy
- -문자열 처리 관련 함수는 string.h를 include함
- 라이브러리 함수 활용
- -문자열을 복사하는 함수 중 개수를 지정할 수 있는 함수 : strncpy
- -문자열을 연결하는 함수 중 개수를 지정할 수 있는 함수 : strncat
- -문자열 포인터를 복사하는 함수 : memcpy, memmove (memmove 함수는 자기 자신을 복사하는 것이 가능)
- 라이브러리 함수 이해
- 문자열 비교 검색 라이브러리
- 라이브러리 함수 이해
- -문자열 비교함수 : memcmp, strcmp, strncmp-문자열을 검색하여 분리하는 함수 : strtok
- -문자열 검색함수 : memchr, strchr, strrchr, strspn, strcspn, strstr
- -문자열 처리 관련 함수는 string.h를 include 함
- 라이브러리 함수 활용
- -문자열에서 특정 문자의 위치를 검색하는 함수 : strchr, strrchr
- -strtok()함수는 문자열을 토큰으로 분리
- -문자열에서 특정 문자열의 위치를 검색하는 함수 : strstr
- -문자열 비교함수는 첫 번째 매개변수가 더 큰 값이면 양수, 같으면 0, 두 번째 매개변수가 크면 음수를 반환
- 라이브러리 함수 이해
- 도서관리 시스템 고도화(라이브러리 적용)
- 프로그램 설계
- -프로그램 개발 시 작업 목표에 맞게 사용할 라이브러리 함수와 자료구조를 결정해야 함
- 코드 분석
- -특정 문자로 이루어진 문자열인지 검사하는 것이 가능한 함수 : strcspn
- -키워드 검색에 유용한 함수 : strstr
- -토큰을 이용하여 문자열을 분리할 수 있는 함수 : strtok
- 프로그램 설계
- 동적 메모리
- 동적 메모리 이해
- -동적 할당은 힙 영역에 할당함
- -동적 할당된 공간은 프로그래머가 해제해야함
- -동적 할당은 실행 시 크기가 정해지는 데이터 처리에 효과적임
- -동적 할당은 실행 시에 할당되는 메모리임
- 동적 메모리 활용
- -calloc은 동적 할당 후 0으로 초기화
- -malloc은 동적 메모리의 크기를 변경하여 할당하는 것이 가능함
- -free는 동적 할당된 메모리를 해제함
- -malloc, calloc은 동적으로 메모리를 할당하는 라이브러리 함수임
- 동적 메모리 이해
- 함수 포인터
- 함수 포인터 이해
- -함수 포인터를 활용하면 함수를 자유롭게 주고받거나 함수 호출을 자동화할 수 있음
- -리턴타입(*함수 포인터명)(매개변수리스트);
- -함수 포인터는 함수를 저장하는 포인터를 의미함
- 함수 포인터 활용
- -qsort는 테이블의 자료를 퀵정렬하는 함수임
- -비교함수는 처리할 자료형에 맞게 직접 구현해야 함
- -qsort는 stdlib.h를 include 해야 함
- 함수 포인터 이해
- 도서관리 시스템 고도화(동적메모리)
- 프로그램 설계
- -동적할당은 프로그램 실행 시 할당하는 메모리 공간임
- -함수포인터를 이용하여 정렬함수를 사용할 수 있음
- -프로그램 개발 시 작업 목표에 맞게 사용할 라이브러리 함수와 자료구조를 결정해야 함
- 코드 분석
- -strcspn은 특정 문자로 이루어진 문자열인지 검사하는 것이 가능한 함수임
- -strstr은 키워드 검색에 유용한 함수임
- -strtok는 토큰을 이용하여 문자열을 분리할 수 있는 함수임
- 프로그램 설계
- 파일 입출력 라이브러리(기초)
- 파일 입출력 기초
- -파일스트림 생성 시 읽기, 쓰기, 추가 등의 모드를 지정
- -파일을 열고 닫는 라이브러리 함수는 fopen, fclose임
- -파일 입출력 시 먼저 스트림을 생성해야 함
- 파일 입출력 함수
- -파일에 출력하는 함수는 fputc, fputs, fprintf, fwrite 등이 있음
- -파일의 끝을 판단하는 함수는 feof가 있음
- -파일로부터의 입력 함수로는 fgetc, fgets, fscanf, fread 등이 있음
- 파일 입출력 기초
- 파일 입출력 라이브러리(응용)
- 텍스트 파일 입출력
- -rewind는 파일의 읽기/쓰기 위치를 처음 위치로 이동
- -형식화된 문자열을 이용한 파일 입출력은 fscanf, fprintf를 이용 ( int *scanf(FILE *stream, const char *format, ...); ), (int *fprintf(FILE *stream, const char *format, ...); )
- 이진 파일 입출력
- -fseek는 지정한 거리만큼 포인터를 이동
- -ftell은 현재 포인터의 위치를 반환
- -이진 파일의 입출력은 fread, fwrite를 이용
- 텍스트 파일 입출력
- 도서관리 시스템 고도화(파일 처리)
- 프로그램 설계
- -유효성 검사를 위해서 다양한 함수를 적용하게 처리할 수 있음
- -문자열의 길이는 strlen 함수를 이용하여 빈 입력값을 검사할 수 있음
- -프로그램 개발 시 작업 목표에 맞게 사용할 라이브러리 함수와 자료구조를 결정해야 함
- 코드 분석
- -파일 스트림 생성 시 fopen 함수를 이용하고 모드를 함수의 인수로 전달해야 함
- -형식화된 파일 입출력은 fscanf와 fprintf를 이용하여 처리할 수 있음
- -파일 입출력을 위해서는 먼저 입출력을 위한 스트림을 생성해야 함
- 프로그램 설계
- 시간 관련 라이브러리
- 라이브러리 함수 이해
- -시간 데이터 처리에는 시간 구조체 tm과 초 단위 시간변수 time_t가 있음
- -시간 관련 라이브러리 함수는 time.h에 선언되어 있음
- 라이브러리 함수 활용
- -현재 시스템의 시간을 구할 수 있는 함수 : time
- -지역 시간을 구하는 함수 : localtime
- -tm구조체를 문자열로 변환하는 함수 : asctime
- -초 단위 시간을 시간문자열로 변환하는 함수 : ctime
- -두 시간 사이의 차이를 구하는 함수 : difftime
- 라이브러리 함수 이해
- 주소록 관리 시스템
- 프로그램 설계
- -프로그램의 기능 수행을 위한 요구분석을 주의 깊게 수행해야 함
- -이진 파일의 입출력은 fread, fwrite를 이용함
- -현재 시간 등을 반환하는 함수로 time함수를 이용할 수 있음
- -유효성 검사를 위하여 다양한 라이브러리 함수를 사용할 수 있음
- 코드 분석
- -문자열의 길이를 반환하는 함수 : strlen
- -이진 파일의 읽기와 쓰기에 이용하는 함수 : fread, fwrite
- -현재 시간 정보를 얻을 수 있는 함수 : time
- -검색 문자의 우치를 찾을 수 있는 함수 : strchr
- 프로그램 설계
- 변환/랜덤 라이브러리
- 변환 라이브러리
- -숫자 형태의 문자열을 정수형으로 변환하는 함수 : atoi
- -숫자 형태의 문자열을 실수형으로 변환하는 함수 : atof
- -숫자 형태의 문자열을 변환하는 라이브러리 함수는 stdlib.h 헤더파일에 선언되어 있음
- 랜덤함수
- -rand함수는 실행 시 동일한 랜덤값을 생성하므로 시드함수를 이용해야 함
- -rand함수 사용 시 시드함수로 srand가 있음
- -랜덤값을 생성하는 라이브러리 함수 : rand
- 변환 라이브러리
- 게임 프로젝트
- 프로그램 설계
- -일반적으로 IDE에서 프로젝트를 생성한 후 다중 소스파일로 작성하여 프로그램을 개발함
- -1~10까지의 값을 난수 발생하기 위해서는 rand()%10+1의 연산을 이용함
- -시간함수 관련 라이브러리를 이용하면 현재 시간, 시간 차이 등을 간단하게 얻을 수 있음
- 코드 분석
- -rand 함수는 랜덤값을 발생시키지만 실제로는 항상 동일한 값을 발생시킴
- -다른 랜덤값 생성을 위하여 랜덤함수 호출 전 srand 함수를 이용하여 다른 시드를 전달함
- -랜덤값은 rand 함수를 이용하여 발생시킬 수 있음
- 프로그램 설계
728x90
'PROGRAMMING > etc study' 카테고리의 다른 글
요구사항 확인 part 2 (0) | 2021.08.20 |
---|---|
요구사항 확인 part 1 (0) | 2021.04.08 |
http와 http method (0) | 2021.04.08 |
앱의 종류 (0) | 2021.04.07 |
프로그래밍 언어 활용 part 1 (0) | 2021.04.07 |