정보

    • 업무명     : 정보처리기사 실기 : 25강 프로그래밍 언어 활용 (기본문법 활용하기)

    • 작성자     : 이상호

    • 작성일     : 2020-05-10

    • 설   명      :

    • 수정이력 :

     

     

     내용

    [변수 활용]

    [1] 프로그래밍 언어 활용의 개요
    • 프로그래밍 언어란 컴퓨터 시스템을 동작시키기 위한 프로그램 작성 언어를 말한다. 프로 그램은 다소 단순해 보이는 명령어들의 조합으로 구성되는데, 이러한 조합들은 비트(Bit) 라고 불리는 0과 1의 값으로 작성되거나 변환되어 컴퓨터가 이해할 수 있도록 한다. 

       

    • 1. 비트(Bit) 

       

      • 비트는 컴퓨터를 이해하기 위한 가장 기본적인 용어로, Binary Digit의 약칭이다. 0과 1로 만 구성된 이진법(ex. 101001)을 이용하며, 컴퓨터 이용 시 흔히 접할 수 있는 1바이트 (Byte)는 8비트(Bit)를 의미한다

     

    • 2. 컴퓨터에 명령 전달 방법 컴퓨터에 명령을 전달할 때에는 비트(Bit)로 전달이 된다. 비트의 0과 1을 컴퓨터가 이해 할 수 있는 방식으로 변환하여 전달하게 되는데, 그 방법으로는 전기적 신호를 이용하거나 광 신호를 이용하는 방식 등이 있다. 예를 들어 0은 0V(볼트), 1은 5V(볼트)의 전기 적 신호에 매칭시켜 컴퓨터가 이해할 수 있도록 할 수 있다. 그 밖에 불을 깜빡이는 횟수 에 차이를 두어 컴퓨터가 신호를 받아들일 수 있도록 하는 방식 등이 있다. 

       

      • 어떠한 프로그래밍 언어를 사용하느냐에 따라 비트(Bit) 변환 없이 프로그램 자체를 0과 1로만 작성할 수도 있으나, 이 경우에는 어느 정도의 한계가 있다. 따라서 보다 쉽게 작 성하여 컴퓨터에 전달하고, 더욱 복잡한 프로그램을 구현하기 위해 프로그래밍 언어는 점진적으로 발전하게 되었다

     

    • 3. 컴퓨터 시스템 구조 컴퓨터는 전달받은 0과 1의 값들을 정해진 순서대로 실행하며 그 과정에서 처리 (Processing), 저장(Store) 등을 수행한다. 프로그램 실행 및 데이터 처리는 중앙 처리 장치(CPU)에서 수행하고, 저장은 기억 장치 (Memory)에서 수행하며, 중앙 처리 장치(CPU)로부터 명령을 받아 데이터를 입력 또는 출력하는 일은 입출력 장치(I/O Device)에서 수행한다.

     

    • 4. 명령어 형식 비트(Bit)는 그 개수만큼 많은 정보를 전달할 수 있다. 용도에 따라 필드(Field)로 나눌 수 있으며, 필드의 수, 배치 방법, 각 필드에 포함되는 0과 1의 개수를 정의한 것을 명령어 형식이라고 한다. 명령어 형식에 따라 정보의 양이 달라지기 때문에 용도에 따라 적절하게 구성하여야 한다.

       

      • (1) 연산 코드: 수행될 연산을 지정(LOAD, ADD 등)

         

      • (2) 오퍼랜드: 연산을 수행하는 데 필요한 데이터 또는 데이터의 주소

     

    • 5. 프로그램의 구성 요소 프로그램은 크게 자료 구조와 알고리즘으로 구성된다. 

       

      • (1) 자료 구조 자료 구조는 컴퓨터에 데이터를 삽입, 삭제, 수정하게 해 주는 논리적인 공간 구조를 의미 하며, 자료의 형태에 따라 단순 구조, 선형 구조, 비선형 구조, 파일 구조로 분류할 수 있다.

     

    • (2) 알고리즘 알고리즘은 넓은 의미에서 자료 구조와 함께 프로그램을 구성하는 요소를 의미하며, 좁은 의미에서는 어떤 문제에 대한 답을 찾는 해법을 의미한다. 이 알고리즘은 기본적 인 명령어를 통해서도 작성 가능한데, 과 같은 특성을 만족하여야 한다. 알고리즘의 표현은 자연어, 순서도, 의사 코드, 프로그래밍 언어를 이용하는 방법이 있으며, 따라서 프로그래밍 언어가 아니더라도 알고리즘의 표현은 가능하다.

     

    [2] 용어 정의
    • 프로그래밍을 위한 대표적인 용어로 변수, 바인딩, 데이터 타입 등이 있으며, 데이터 타입 을 변수에 적용하기 위해서는 다음 용어에 대한 이해가 필요하다. 

       

      • 1. 변수: 어떤 값을 주기억 장치에 기억하기 위해서 사용하는 공간을 의미한다. 

         

      • 2. 식별자: 프로그램의 구성 요소를 구별하기 위한 기준으로, 변수명이 식별자에 속한다.

         

      • 3. 바인딩: 변수와 변수에 관련된 속성을 연결하는 과정으로, 정적 바인딩과 동적 바인딩 으로 구분된다. 

         

        • (1) 정적 바인딩: 프로그램 실행 시간 전에 속성을 연결하는 방식이다. 

           

        • (2) 동적 바인딩: 프로그램 실행 시간에 속성을 연결하는 방식이다. 

           

      • 4. 선언: 변수에 이름, 데이터 타입 등의 속성을 부여하는 작업으로, 명시적 선언과 묵시 적 선언으로 구분된다. 

         

        • (1) 명시적 선언: 선언문을 이용하여 변수 이름을 나열하고 속성을 부여하는 방식이다. 

           

        • (2) 묵시적 선언: 별도의 선언문 없이 디폴트 규칙에 의해 속성이 부여되는 방식이다.

      • 5. 영역: 이름이 사용되는 범위를 의미하며, 정적 영역과 동적 영역으로 구분된다. 

        • (1) 정적 영역: 변수를 찾을 때 구조에 기반하는 방식이다. 

        • (2) 동적 영역: 변수를 찾을 때 구조보다는 순서에 기반하는 방식이다. 

      • 6. 할당: 변수에 메모리 공간을 바인딩하는 작업을 의미한다. 

      • 7. 데이터 타입: 변수가 가질 수 있는 속성값의 길이 및 성질을 의미한다. 

      • 8. 연산자: 데이터 처리를 위해 연산을 표현하는 기호로 +, - 등과 같은 연산자를 포함한다. 

      • 9. 명령문: 프로그램을 구성하는 문장으로, 지시 사항을 처리하는 단위를 의미한다.

     

     

     

    [수행]

    [1] 응용소프트웨어 개발에 필요한 프로그래밍 언어의 데이터 타입을 파악한다.
    • 1. 프로그래밍 언어에서 사용되는 변수와 데이터 타입의 의미를 파악하고, 데이터 타입에 는 어떠한 것들이 있는지 파악한다. 프로그래밍 언어 활용을 위해서는 변수와 데이터 타입에 대하여 먼저 알아야 한다. 데이터 타입의 종류에 따라 그에 적합한 변수를 사용할 수 있으므로 변수 및 데이터 타입의 의미와 데이터 타입의 유형에는 어떠한 것들이 있는지 파악한다. 

       

      • (1) 변수의 의미를 파악한다. 변수는 저장하고자 하는 어떠한 값이 있을 때, 그 값을 주기억장치에 기억하기 위한 공간을 의미한다. [그림 1-6]의 변수의 개념도를 참고하여 변수의 의미와 역할을 파악 한다. 

     

    • (2) 데이터 타입의 의미를 파악한다. 

       

      • 데이터 타입은 변수에 들어갈 값의 특성을 구분하여 그 특성에 맞게 저장할 수 있도록 하는 데이터 속성값의 길이 및 성질을 의미한다. 사전에 정의된 데이터 타입에 맞는 값이 들어갈 수 있도록 데이터 타입이 가지는 의미를 파악한다.

     

    • (3) 데이터 타입의 유형을 파악한다. 프로그래밍 언어에 따라 데이터 타입의 유형을 구분하는 기준은 차이가 있다. 하지만 일반적으로 와 같이 불린 타입, 문자 타입, 문자열 타입, 정수 타입, 부동 소수점 타입, 배열 타입의 유형을 가지므로 제시된 유형을 파악한다.

       

      • 불린 타입 

         

        • 조건이 참인지 거짓인지 판단하고자 할 때 사용한다. 

           

      • 문자 타입 

         

        • 문자 하나(ex. `A')를 저장하고자 할 때 사용한다. 

           

      • 문자열 타입 

         

        • 나열된 여러 개의 문자(ex. `CAR')를 저장하고자 할 때 사용한다. 

           

      • 정수 타입 

         

        • 정숫값을 저장하고자 할 때 사용한다. 

           

      • 부동 소수점 타입 

         

        • 소수점을 포함하는 실숫값을 저장하고자 할 때 사용한다. 배열 타입 여러 데이터를 하나로 묶어서 저장하고자 할 때 사용한다. 

    • 2. 데이터 타입을 변수에 적용하기 위한 작성 규칙을 확인한다. 변수는 프로그램 소스코드의 공유, 유지 관리, 표준화 등을 위해 일정한 규칙에 따라 작 성된다. 작성 규칙을 확인하여 데이터 타입을 변수에 적용할 수 있도록 사전에 준비한다.

      • (1) 변수 작성 규칙과 관련된 자료를 수집한다. 개발 표준 정의서, 개발자 가이드, 디자인 정의서 등 변수 작성 규칙을 확인할 수 있는 관련 자료들을 수집한다.

     

    • (2) 수집된 개발 표준 관련 문서로부터 변수 작성 규칙을 확인한다.

       

      • 수집된 자료로부터 변수 작성 규칙을 확인하고, 만약 관련 자료가 없거나 수집된 자료 에서 제공하는 정보가 부족한 경우에는 변수명이 변숫값의 특징을 잘 반영할 수 있도록 변수명을 직접 설정한다

     

    [2] 데이터 타입을 적용하여 변수를 사용한다.
    • 1. 데이터 타입의 판별을 위해 응용소프트웨어의 기능 요건을 명확히 식별한다. 

       

      • (1) 요구 사항이 명시된 관련 자료를 수집한다. 제안 요청서, 제안서, 인터뷰 결과서 등 요구 사항을 확인할 수 있는 관련 자료들을 수집한다. 예를 들어 공공 정보화 사업 수행 시에는 [그림 1-7]과 같은 제안 요청서 에 요구 사항이 명시되어 있으며, 이 외에 제안서, 인터뷰 결과서 등을 통해 요구 사 항을 확인할 수 있다. 이를 참고하여 요구 사항 관련 자료를 수집한다. 

     

    • (2) 수집된 자료로부터 개발하여야 할 기능 요건을 명확히 파악한다. 요구 사항 확인을 위해 수집된 자료로부터 개발하여야 하는 기능 요건을 파악한다. 이때 성능, 보안 등과 같은 비기능적인 요건들도 만족할 수 있도록 비기능 요구 사항 에 대해서도 확인한다. 

     

    • (3) 환경적, 기술적, 비즈니스적인 제약 사항이 있는지 확인하여 개발 범위를 확정한다. 사전에 개발 범위를 확정하였거나 협의가 완료된 경우라 하더라도 개발 시점과 환경 변화 등에 따라 제약 사항이 발생할 수 있다. 따라서 제약이 되는 환경 요소, 기술 요소, 비즈니스 요소를 파악하여 개발 범위를 확정한다. 예를 들어, 공공 정보화 사업 수행 시에는 과업 대비표라는 산출물이 있으며, 이는 제 안 요청서의 요건에 대한 기술 협상 결과를 [그림 1-9]와 같이 기재하게 되므로, 그림 을 참고하여 확정된 개발 범위를 명시한다. 

     

    • (4) 계획된 개발 범위 내에서 구현 가능한 응용소프트웨어의 기능을 정의한다. 확정된 개발 범위에 맞게 응용소프트웨어의 기능을 문서화한다. 예를 들어, 공공 정보 화 사업 수행 시에는 요구 사항 정의서 또는 요구 사항 명세서라는 산출물을 통해 기 능을 정의할 수 다.

    • 2. 기능 요건을 구현하기 위해 개발되어야 할 프로그램을 정의한다. (1) 응용소프트웨어의 기능 요건으로부터 개발되어야 할 프로그램을 도출한다. 하나의 기능 요건이 여러 개의 프로그램으로 구성될 수도 있고, 여러 개의 기능 요건 이 공통된 하나의 프로그램으로 구성될 수도 있기 때문에 기능 요건에 따라 개발되어 야 할 프로그램을 도출하여 정의한다. 프로그램에 대한 정의는 [그림 1-11]을 참고하여 작성한다. 

     

    • (2) 프로그램이 필요로 하는 변수를 식별하여 변수 작성 규칙에 따라 지정한다. 프로그램에 포함되어야 할 변수가 어떤 유형이 있는지 식별하고, 변수 작성 규칙을 참 고하여 변수명을 표준화한다. 변수명을 지정할 때에는 다음의 사항들을 고려하여 작성한다. (가) 변수명의 최대 길이를 확인한다. (나) 대소문자의 구별 여부를 확인한다. (다) 사용할 수 있는 문자의 집합을 확인한다. (라) 변수명으로 사용이 어려운 키워드를 포함하고 있지 않은지 확인한다.

     

    • 3. 변수가 가져야 하는 데이터 타입을 정의한다.

       

      • (1) 변수가 가져야 하는 데이터가 참/거짓을 판별하는 값이어야 하는지 확인한다. 변수에 저장되어야 하는 값이 참(True), 거짓(False)과 같이 두 개의 값으로만 구별 되는지 확인한다. 참/거짓를 판별하는 값만 가질 경우, 프로그래밍 언어에서 불린 타입 (Boolean Type)으로 변수가 설정되도록 정의한다. 

         

      • (2) 변수가 가져야 하는 데이터가 숫자인지, 문자인지 확인한다. 변수에 저장되어야 하는 값이 숫자인지, 문자인지 확인하여 잘못된 값이 변수에 저장 되지 않도록 정의한다. 

         

      • (3) 변수가 숫자인 경우에는 정수인지, 소수점을 포함하는지 확인한다. 정숫값을 변수에 저장하는 경우를 정수(Integer) 타입, 소수점을 포함하는 실숫값을 저장하는 경우를 부동 소수점(Floating-point) 타입이라고 하며, 프로그래밍 언어마다 표현 방식에는 차이가 있으므로 언어별 방식을 참고하여 정의한다.

     

    • (4) 동일한 데이터 타입의 데이터를 묶어서 배열 타입을 적용한다. 각각의 변수를 생성하지 않고, 동일한 데이터 타입의 데이터를 묶어서 하나의 변수에 저장하고 싶은 경우에는 배열 타입을 이용하여 저장한다

     

    • (5) 정의된 변수와 데이터 타입에 대한 설계상의 오류는 없는지 파악한다. 도출된 데이터 타입 및 변수가 주어진 요구 사항을 충분히 반영하고 있는지 검토를 수행한다. 요구 사항이 충분히 반영되지 않았거나 설계상의 오류가 발견된 경우에는 오류에 대한 수정 작업을 시행한다.

     

    [연산자와 명령문 활용]

    [1] 연산자
    • 연산자는 프로그램 실행을 위해 연산을 표현하는 기호로, 프로그램 내에서는 +, -와 같은 연산자가 사용된다. 연산자에는 산술 연산자, 시프트 연산자, 관계 연산자, 논리 연산자 등 이 있으며, 각 연산자는 다음과 같은 종류를 가진다. 

       

      • 1. 산술 연산자(Arithmetic Operator) 산술 연산자는 +, -와 같이 가장 일반적으로 사용되는 연산자이다.

     

    • 2. 시프트 연산자(Shift Operator) 시프트 연산자는 비트를 이동시키는 연산자이다.

     

    • 3. 관계 연산자(Relation Operator) 

       

      • 관계 연산자는 두 피 연산자 사이의 크기를 비교하는 연산자이다.

     

    • 4. 논리 연산자(Logic Operator) 논리 연산자는 두 피 연산자 사이의 논리적인 관계를 정의하는 연산자이다.

     

    • 5. 비트 연산자(Bit Operator) 비트 연산자는 0과 1의 각 자리에 대한 연산을 수행하며, 0 또는 1의 결괏값을 가진다.

     

    [2] 명령문
    • 명령문은 프로그램을 구성하는 문장으로, 지시 사항을 처리하는 단위이다. 기본적인 문법 들의 종류가 매우 많은 것은 아니며, 각 언어마다 유사한 문법 체계를 사용한다. 기본적인 명령어로는 조건문과 반복문이 있는데, 각각의 유형은 다음과 같다. 

       

      • 1. 조건문: 조건문은 조건의 참, 거짓 여부에 따라 실행 경로를 달리하는 if문과 여러 경로 중에 하나 를 선택하는 case문, switch문으로 구분한다. if문의 경우, FORTRAN에서 처음 사용되었으며, FORTRAN 77을 비롯한 다른 프로그래밍언어의 발전에 따라 대다수의 프로그래밍 언어에서 기본 명령문으로 사용하게 되었다.

         

        • if문 

           

          • 조건이 참인지 거짓인지에 따라 경로를 선택한다. 

             

        • case/switch문 

           

          • 조건에 따라 여러 개의 선택 경로 중 하나를 취하고자 할 때 사용하며, 프로그래밍 언어에 따라 case 또는 switch를 명령문으로 사용한다.

        • if문의 경우에는 단순 if문, 선택 if문, 중첩 if문의 유형으로 구분할 수 있다. 단순 if문은 어떤 문장을 수행할지 여부를 결정할 때 사용하며, 선택 if문은 경로를 선택할 때 사용한 다. 
          중첩 if문은 수행 경로가 2개가 넘어갈 때 사용하는데, else 구문을 추가하여 작성할 수 있다. else 구문은 조건식이 거짓인 경우에 수행되는 구문으로, 프로그래밍 언어마다 차이가 있으나 else if와 같은 방식으로 분기를 추가할 수 있다.

        • case문은 다중 if문과는 다르다. if문은 산술 또는 논리적으로 비교가 가능하나 case는 조 건이 동일한지의 여부만 확인한다

     

    • 2. 반복문 반복문은 특정 부분을 조건이 만족할 때까지 실행하도록 하는 명령문으로 while문과 for 문, do문이 있다. FORTRAN의 do문이 시초라고 볼 수 있으며, 최근에는 while문과 for문 이 주로 사용된다.

       

      • 반복문을 사용할 때 특별한 조건이 없으면 무한 처리를 반복하게 된다. 이를 무한 루프라 고 하며, 무한 루프를 방지하기 위해 break;와 continue;를 사용할 수 있는데, break;는 반복문을 중지하도록 하는 명령어이고, continue;는 다음 반복으로 넘어갈 수 있도록 하는 명령어이다. 

         

      • while문 

         

        • 수식이 거짓이 될 때까지 해당 문장을 반복해서 실행한다.

           

      • for문 

         

        • 시작과 종료 조건을 지정하여 참인 동안에는 해당 문장을 반복해서 실행 한다. 

           

      • do문 

         

        • 초깃값, 최종값, 증감값을 지정하여 반복을 실행한다. 

     

    [사용자 정의 자료형 활용]

    [1] 사용자 정의 자료형의 개요
    • C/C++, JAVA와 같은 프로그래밍 언어에서는 사용자가 직접 자료형을 만드는 것이 가능 하다. 이렇게 직접 만드는 자료형을 사용자 정의 자료형이라고 하며, C++의 경우 열거체, 구조체, 공용체로 구분하여 사용자 정의 자료형의 작성이 가능하다. 

       

    • 1. 열거체 

       

      • 열거체는 괄호 안에 연속적인 값이 들어가는 자료형이다. 특정 값을 넣어 주지 않으면 1씩 늘어나기 때문에 상수 배열이라고 부르기도 한다.

     

    • 2. 구조체 

       

      • 구조체는 괄호 안에 멤버 변수를 사용하는 자료형이다. 내부에 멤버 변수 자료형을 마음 대로 선언할 수 있으며, 멤버 함수의 작성도 가능하다.

     

    • 3. 공용체 

       

      • 공용체는 구조체와 거의 유사하나 조금 더 범주가 크다고 볼 수 있다. 열거체나 구조체와 달리 공용체명을 작성하여야 하며, 구조체를 멤버로 사용할 수 있다

     

    [2] 추상화와 상속
    • 사용자 정의 자료형은 추상화와 상속의 개념을 이용한다. 추상화와 상속에 대한 내용은 다음과 같다. 

       

      • 1. 추상화 

         

        • 추상화는 복잡한 문제의 본질을 이해하기 위해 세부 사항은 배제하고 중요한 부분을 중심으로 간략화 하는 기법으로 기능 추상화, 자료 추상화, 제어 추상화로 구분할 수 있다.

           

        • (1) 기능 추상화: 입력 자료를 출력 자료로 변환하는 과정을 추상화하는 방법이다. 

           

        • (2) 자료 추상화: 자료와 자료에 적용할 수 있는 오퍼레이션(Operation)을 함께 정의 하는 방법이다. 

           

        • (3) 제어 추상화: 외부 이벤트에 대한 반응을 추상화하는 방법이다 

     

    • 2. 상속과 구체화 

       

      • 상속이란, 상위 수준 그룹의 모든 특성을 하위 수준 그룹이 이어받아 재사용 또는 확장하는 특성을 의미하고, 구체화란 하위 수준 그룹이 상위 수준 그룹의 추상적인 부분을 구체 화시키는 것을 의미한다. 상속은 단일 상속과 다중 상속이 있으며, 상위 수준의 그룹이 하나만 존재할 때 이를 단일 속성이라고 부른다

     

    [연습문제]

    • 프로그래밍을 위한 대표적인 용어 설명이 잘못된 것은?

       

      • 1. 변수: 어떤 값을 보조기억 장치에 기억하기 위해서 사용하는 공간을 의미한다. 

         

      • 2. 식별자: 프로그램의 구성 요소를 구별하기 위한 기준으로, 변수명이 식별자에 속한다.

         

      • 3. 바인딩: 변수와 변수에 관련된 속성을 연결하는 과정으로, 정적 바인딩과 동적 바인딩 으로 구분된다. 

         

        • (1) 정적 바인딩: 프로그램 실행 시간 전에 속성을 연결하는 방식이다. 

           

        • (2) 동적 바인딩: 프로그램 실행 시간에 속성을 연결하는 방식이다. 

           

      • 4. 선언: 변수에 이름, 데이터 타입 등의 속성을 부여하는 작업으로, 명시적 선언과 묵시 적 선언으로 구분된다. 

     

    • 프로그래밍 언어에 따라 데이터 타입의 유형을 구분하는 기준이 잘못된 것은?

       

      • 불린 타입 : 조건이 참인지 거짓인지 판단하고자 할 때 사용한다. 

         

      • 문자열 타입 : 문자 하나(ex. `A')를 저장하고자 할 때 사용한다. . 

         

      • 정수 타입 :  정숫값을 저장하고자 할 때 사용한다. 

         

      • 부동 소수점 타입 : 소수점을 포함하는 실숫값을 저장하고자 할 때 사용한다. 배열 타입 여러 데이터를 하나로 묶어서 저장하고자 할 때 사용한다. 

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기