PROGRAMMING/study

프로그래밍 언어 활용 part 2

seulda 2021. 4. 7. 16:43
728x90
  • 프로그래밍 언어별 특성
    • 컴퓨터 언어 개요
      • 컴퓨터 언어를 실행방식의 측면에서 구분하면 크게 컴파일러 방식과 인터프리터 방식으로 구분됨
      • -인간 중심과 기계 중심에 따라 고급과 저급언어로 구분됨
      • -프로그래밍이란 컴퓨터를 이용하여 특정한 작업을 할 수 있도록 명령서를 기술하는 작업
    • 컴퓨터 언어 종류
      • -C++은 C언어의 확장으로 객체지향 언어-JAVA는 더욱 더 완벽한 객체지향 프로그램으로 웹 응용 프로그램 개발에 용이한 언어
      • -Python은 익히기 쉽고 다른 언어와 혼합하여 사용할 수 있는 언어
      • -C#은 인터넷과 같은 분산 환경 프로그래밍에 적합한 언어
      • -C언어는 절차지향언어로 시스템 프로그램 개발에 용이한 언어
  • 디버깅
    • 디버깅 개요
      • -디버깅(Debugging)은 프로그래밍 과정 중에 발생하는 오류나 비정상적인 연산과 같은 버그를 찾고 수정하는 과정
      • -디버깅은 모듈 단위로도 디버깅을 할 수 있음
      • -버그란 프로그래밍 과정 중에 발생하는 오류를 말함
    • 디버깅 수행하기
      • -디버깅을 시작 후 필요에 따라 변수값을 지정하여 해당 변수의 변화되는 과정을 추적하는 것이 가능함
      • -디버깅 시 중단점을 지정하여 특정 지점까지 문장을 수행하는 것이 가능함
      • -대부분의 IDE는 디버깅 기능을 내장하고 있음
  • 애플리케이션 최적화
    • Optimization
      • -유지보수의 편의성을 고려한 코드 개선도 포함됨
      • -안정성 확보도 코드 최적화 기법 중 하나에 해당됨
      • -최적화란 프로그램이 최소의 자원 사용으로 최소 시간에 수행될 수 있도록 코드를 개선하는 과정을 말함
    • 최적화 작업하기
      • -4바이트 이상의 매개변수는 포인터로 전달함
      • -여러 개의 다른 데이터 형의 매개변수는 구조체로 전달함
      • -여러 개의 동일한 데이터 형의 매개변수는 배열로 전달함
      • -실수연산보다 정수연산이 더 빠름
  • 라이브러리
    • 라이브러리 개요
      • -프로그램 개발 시 자주 사용되는 코드를 라이브러리화하여 재사용할 수 있음
      • -공유라이브러리는 하나의 프로그램에서 적재되어 사용되면 이후 필요로 하는 다른 프로그램에서 바로 사용하는 것이 가능함
      • -동적 라이브러리는 프로그램이 실행되고 적재되는 라이브러리
      • -정적 라이브러리는 컴파일 시 적재되는 라이브러리
      • -라이브러리는 함수나 모듈의 집합
    • 사용자 정의 라이브러리
      • -모듈을 만들어 컴파일 후 라이브러리화하여 다른 프로그램에서 호출하여 사용할 수 있음
      • -프로그래머가 필요에 의해 라이브러리를 만들 수 있음
  • 문자처리 라이브러리
    • 문자 문자열 입출력
      • -문자를 출력할 때 사용 가능한 표준 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 > 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