PROGRAMMING/study

프로그래밍 언어 활용 part 1

seulda 2021. 4. 7. 16:32
728x90
  • 컴퓨터 프로그래밍 이해
    • 프로그래밍 개요
      • 컴퓨터 언어는 고급 언어와 저급 언어로 구분됨
      • C언어의 개발 절차는 코드작성→컴파일→링크→실행의 순서
      • C언어는 1972년 개발된 고급 언어로, 작고 빠르면서 하드웨어 제어도 가능한 특징이 있음
      • 소스코드를 기계어로 번역하는 것을 컴파일이라고 함
      • 컴퓨터 언어는 인간과 컴퓨터 간의 커뮤니케이션 수단
    • 통합개발환경(IDE) 구축
      • 통합개발환경이란 프로그램 개발에 필요한 코드 작성, 컴파일, 링크, 실행, 디버깅과 같은 작업을 하나의 환경에서 수행 가능하도록 구성된 프로그램을 말함
  • 프로그램 기본 구조
    • main()함수 알아보기
      • 하나의 실행 프로그램에는 하나의 main() 함수가 반드시 존재
      • 식별자는 대소문자를 구분
      • 하나의 문장 끝에는 반드시 ;을 기술
      • C언어는 소문자로 문장을 기술해야 함
      • C언어는 헤더파일과 함수로 구성됨
    • 출력 문장 구현하기
      • 출력할 내용은 ""내에 기술
      • newline, tap, form feed 등과 같은 이스케이프 문자가 있음
      • 표준 출력 문장으로 많이 사용되는 함수로 printf();가 있음
  • 변수와 데이터형
    • 변수와 상수
      • 변수는 사용 전 반드시 선언을 먼저 해야 함
      • 식별자 생성 시 예약어는 사용할 수 없음
      • 상수란 의미가 변하지 않는 자료 값을 의미
      • 식별자는 영문 대소문자, 숫자, 밑줄 기호(_)를 이용하여 만듦
      • 변수는 프로그램 수행 시 필요한 자료 값을 보관할 수 있는 공간을 의미
    • 데이터타입
      • 문자형 데이터타입으로 char이 있음
      • 실수형 데이터타입으로 float, double, long double이 있음
      • 변수값을 출력 시 형식 지정자를 사용하여 출력할 수 있음
      • 정수형 데이터타입으로 short, int, long, long long이 있음
      • 저장할 데이터의 종류와 크기에 따라 다양한 데이터타입이 있음
  • 연산자
    • 다양한 연산자
      • 크기 비교에 사용되는 관계연산자로 <, >, ≤, ≥, ≠, ==가 있음
      • 증감 연산자에는 연산자의 위치에 따라서 전위형과 후위형이 있음
      • 논리 연산자로 &&, ||, ! 연산자를 사용
      • 산술 연산자로 +, -, *, /, %가 있음
    • 기타 연산자
      • 임시적인 형 변환을 위하여 형변환 연산자를 사용할 수 있음
      • 연산자의 우선순위에 따라 연산이 이루어짐
      • 비트 간의 연산으로 비트 연산자가 있음
  • 조건문
    • if문
      • if문 내에 중첩해서 if문을 기술하는 것이 가능
      • 조건에 따라 수행하는 문장이 한 문장이면 {}는 생략 가능
      • 조건에 따라 분기되는 if문은 크게 3가지 형태로 구분됨
    • switch case문
      • 조건에 일치하는 case가 없는 경우 수행할 문장은 default에 기술
      • 입력 버퍼를 비우는 함수로 fflush(stdin);함수가 있음
      • 표준입력 함수로 scanf()를 사용하고 입력을 위해 형식지정자를 사용
      • switch문에서 분기 조건으로 상수, 정수, 수식이 사용될 수 있음
  • 반복문
    • for문
      • 필요에 따라 중첩하여 for문을 사용할 수 있음
      • 무한 루프를 위해 for( ; ; )와 같은 문을 사용할 수 있음
      • 초기식, 조건식, 증감식으로 구성되며, 조건이 참인 동안 문장을 반복 수행
    • while문
      • do-while : 조건식이 참인 동안 문장을 반복 수행하며, 문장을 한 번 이상 수행할 필요가 있는 경우 유용
      • continue : 반복문의 시작 부분으로 분기함
      • break : 현재 수행 중인 반복문을 빠져나감
      • while : 조건식이 참인 동안 문장을 반복 수행
  • 함수
    • 함수 정의
      • 매개변수는 함수의 입력값으로 사용됨
      • return에 의해 반환할 수 있는 값은 한 개
      • return은 함수를 호출한 곳으로 값을 반환하는 역할
      • 함수의 정의는 '리턴형 함수명 (매개변수) { }'의 형식으로 정의
    • 함수 선언 및 호출
      • 함수 선언 시 매개변수명은 생략 가능
      • 함수 선언은 함수의 원형(Prototype)을 기술
  • 변수의 스코프
    • 지역변수
      • 함수 내에 선언된 변수, Local Variable
      • 함수가 시작 시 생성, Stack에 생성
      • 초기화 전 쓰레기 값을 가지고 있음
      • 블록 내에서 변수 선언이 가능(C99)
      • 선언된 블록에서 유효
      • 매개변수도 지역변수
      • 함수가 종료되면 변수도 소멸
      • 변수가 선언된 블록에서만 유효한 변수
      • 변수 스코프(Scope) : 변수 참조가 가능한 유효범위
    • 전역변수
      • 프로그램 시작 시 생성, 데이터 영역에 생성
      • 함수 밖에서 선언
      • 전역변수는 프로그램 전체에서 참조하므로 복잡성을 증대-메모리 공간의 점유
      • 다중 파일 : extern을 선언하여 외부에서도 참조 가능
      • 모듈화의 독립성 확보가 어려움
      • 자동으로 0으로 초기화
      • 프로그램 종료 시 소멸
      • 프로그램 내 전체 함수에서 유효, Global Variable
  • 배열
    • 선언과 초기화
      • 선언 : 배열 원소의 데이터형, 배열 이름, 배열의 크기가 필요하며, 배열의 크기는 상수로만 지정
      • 초기화 : 배열을 초기화하려면 {}안에 초기값을 나열함. 배열선언 시 초기화할때는 배열의 크기를 생략할 수 있음
      • 실제 메모리 구조는 인접한 메모리의 연속
      • 필요 시 2차원 이상의 배열 형태를 구현하는 것이 가능
      • 사용 : 배열의 각 원소에 접근하려면 인덱스를 사용. 인덱스는 항상 0~(배열의 크기-1) 사이의 값
      • 배열 : 같은 데이터형의 변수들을 메모리에 연속적으로 할당하고 같은 이름으로 사용하는 자료 구조
  • 문자열
    • 문자열 이해
      • 문자열 저장은 문자배열을 이용함-문자 배열은 선언과 동시에 ""를 이용하여 초기화가 가능
      • 문자열을 저장하는 문자배열의 크기는 저장할 문자 수 + 1 이상 크기가 필요
      • 문자열은 null로 끝나는 문자들의 집합
    • 문자열 입출력
      • scanf()는 공백이나 enter 전까지를 입력받음
      • gets()는 공백을 포함한 문자열 입력이 가능
      • 표준 입력을 통한 문자열 입력은 scanf(), gets()함수를 이용할 수 있음
  • 포인터 기초
    • 포인터 이해
      • 선언 : 데이터형변수명이 필요함 ex) intp;
      • 사용 : 변수의 주소를 구할 때는 주소 구하기 연산자 &를 이용하고, 포인터가 가리키는 변수에 접근할 때는 간접 참조 연산자를 이용 ex) intp=&x; *p=10;
      • 포인터 : 다른 변수의 주소를 저장하는 변수
    • 포인터 이용
      • 포인터 사용시 주의사항 : 포인터 변수는 포인터가 가리키는 변수의 데이터형과 일치하도록 선언해야함. 잘못된 포인터를 사용하는 것은 위험하므로, 포인터가 가리키는 변수가 없을 때는 NULL을 저장.
  • 포인터 활용
    • 포인터와 배열
      • 포인터 변수를 배열명으로 초기화한 경우 포인터 변수를 배열처럼 인덱스를 사용하는 것이 가능
      • 배열명은 변수가 아니므로 증감 연산자에 의한 연산은 불가능
      • 배열명은 배열의 시작 주소를 의미
    • 포인터 연산
      • 포인터 변수에 증감 연산자를 이용하여 배열요소를 참조할 수 있음
      • 후위 증감 연산자가, 전위 증감 연산자보다 우선순위가 높음
      • 배열명을 포인터 변수와 같이 연산에 의해 배열요소를 참조할 수 있음
  • 포인터와 문자열
    • 포인터 배열
      • 포인터 배열을 이용하여 각 변수를 참조하는 것이 가능
      • 여러 개의 문자열을 하나로 묶어 처리하는 방법으로 문자 포인터 배열을 이용할 수 있음
      • 포인터 배열은 주소를 보관하는 배열
    • 배열 포인터
      • 배열 포인터 선언 형식은 "데이터타입 (*포인터 변수명)[크기];"와 같은 형식으로 선언
      • 배열 포인터란 배열 전체를 가리키는 포인터로 사용됨
  • 구조체
    • 구조체 이해
      • 구조체는 먼저 정의하고 변수를 선언하여 사용
      • 구조체 변수는 모든 데이터 타입을 사용할 수 있음
      • 구조체 선언 시 구조체명 앞에 struct라는 키워드를 사용해야 함
      • 구조체는 서로 다른 데이터를 묶어서 처리하기 용이한 자료구조
    • 구조체 처리
      • 선언 시 초기화에는 배열과 동일한 방법으로 초기화
      • 구조체 포인터로 구조체 멤버에 접근할 때는 간접 접근 연산자 ->를 사용
      • 구조체도 필요에 따라 구조체 배열을 선언하는 것이 가능
      • 구조체는 선언 시 초기화하는 것이 가능
  • 공용체와 열거체
    • 공용체
      • 비트필드는 구조체 멤버를 비트 단위로 할당하여 사용
      • 공용체는 멤버들이 메모리를 공유해서 사용하는 자료구조
    • 열거체
      • typedef는 기존의 데이터형에 새로운 이름을 만드는 기능
      • typedef는 호환성과 가독성을 향상시키는 목적으로 사용
      • 열거체는 정수형의 일종으로 변수가 가질 수 있는 값을 열거 상수로 나열하는 것
  • 함수의 인자
    • 매개변수
      • 실매개변수는 함수 호출 시 기술되는 매개변수를 말함
      • 참조에 의한 호출은 참조 할 정보, 즉 주소를 전달하여 함수에서 주소로 참조하는 전달 방식
      • 값에 의한 호출은 값만을 전달하고 함수에서 복사해서 사용
      • 형식매개변수란 함수의 원형에 기술되는 매개변수 리스트를 말함
    • 다양한 인자 전달
      • 구조체는 구조체 자체를 전달하는 것보다 구조체 시작 주소를 전달하여 함수에서 주소로 참조하도록 하는 것이 좋음
      • 구조체나 구조체 배열을 참조에 의한 호출로 매개변수를 전달하면 메모리 사용에 유리함
      • 배열을 함수의 매개변수로 전달할 때는 배열명을 전달하여 배열의 시작 주소가 전달되도록 함
  • 스토리지 클래스
    • 기초 이해
      • 자동 변수는 선언된 블록을 빠져나가면 소멸
      • 전역 변수는 프로그램 전체에서 통용되고 다른 파일에서도 통용 가능
      • 레지스터 변수는 CPU의 레지스터에 할당되는 메모리로 빠른 액세스가 가능
      • 지역 변수는 자동 변수
    • 정적 변수
      • 정적 전역 변수는 프로그램 전체에서 사용 가능
      • 정적 변수는 할당 시 0으로 초기화
      • 정적 지역 변수는 할당 시 한 번만 초기화되고 선언된 블럭을 빠져나가도 소멸되지 않음
  • 배열 포인터 처리
    • 포인터 배열 기초
      • 배열의 주소를 포인터 배열에 저장하면 2차원 배열과 같이 참조할 수 있음
      • 각 변수의 주소를 배열과 같이 묶어서 처리하는 것이 가능
    • 고급 포인터 배열 기술
      • 2차원 배열은 열 크기를 기준으로 포인터 변수를 선언할 수 있음
      • 구조체 포인터 배열은 구조체를 이용하는 것보다 메모리 사용 측면에서 더 효율적
  • 전처리기
    • 매크로
      • 매크로 상수와 함수는 컴파일 시 대치되는 문장
      • 예약 매크로는 미리 정의된 매크로 상수
      • 전처리기는 컴파일 전 수행되는 프로그램
    • 조건부 컴파일
      • #ifdef, #ifndef는 매크로 상수의 정의 여부에 따라 컴파일
      • 조건부 컴파일은 특정 조건이 만족할 때만 코드를 컴파일함
  • 애플리케이션 구현
    • 프로그램 설계
      • 다양한 데이터 타입을 묶어서 처리할 필요가 있는 경우 적절한 자료구조는 구조체
      • 프로그램 개발 시 요구사항 분석 후 적절한 자료구조를 선택하는 것이 중요
    • 코드 분석
      • 사용자 정의 헤더 파일은 ""를 이용하여 기술
      • 매크로 상수는 프로그램의 가독성을 높이고 유지보수를 편리하게 하는 장점이 있음
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 2  (0) 2021.04.07