[정보처리 산업기사 필기] 프로그래밍 언어활용

Updated:

데이터 타입 B (2022-02-24)

  • 데이터 타입(Data Type)은 변수(Variable)에 저장될 데이터의 형식을 나타내는 것으로, 변수에 값을 저장하기 전에 문자형, 정수형, 실수형 등 어떤 형식의 값을 저장할지 데이터 타입을 지정하여 변수를 선언해야함

C의 데이터 타입 크기 및 기억범위

  • 문자(char , 1Byte, -128 ~ 127)
  • 부호 없는 문자형(unsigned char, 1Byte, 0 ~ 255)
  • 정수
    • short , 2Byte,
    • int, 4Byte,
    • long, 4Byte
    • long long, 8Byte
  • 부호 없는 정수형
    • unsigned short, 2Byte
    • unsigned int, 4Byte
    • unsigned long, 4Byte
  • 실수
    • float, 4Byte
    • double, 8Byte
    • long double, 8Byte

JAVA의 데이터 타입 크기 및 기억 범위

  • 문자
    • char, 2Byte
  • 정수
    • byte, 1Byte
    • short, 2Byte
    • int, 4Byte
    • long, 8Byte
  • 실수
    • float, 4Byte
    • double, 8Byte
  • 논리
    • boolean, 1Byte

Python의 데이터 타입 크기 및 기억 범위

  • 문자
    • str, 무제한, 무제한
  • 정수
    • int, 무제한, 무제한
  • 실수
    • float, 8Byte
    • complex, 16Byte

변수 - A

변수의 개요

  • 변수(Variable)는 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미함, 변수는 저장하는 값에 따라 정수형, 실수형, 문자형, 포인터형 등으로 구분함

변수명 작성 규칙

  • 영문자, 숫자, _(under bar)를 사용할 수 있음
  • 첫 글자는 영문자나 _(under bar)로 시작해야하며, 숫자는 올 수 없음
  • 글자 수에 제한이 없음
  • 공백이나 *, +, -, / 등의 특수 문자를 사용할 수 없음
  • 대,소문자를 구분함
  • 예약어를 변수명으로 사용할 수 없음
  • 변수 선언 시 문장 끝에 반드시 세미콜론(;)을 붙여야함

기억 클래스

변수 선언 시 메모리내에 변수의 값을 저장하기 위한 기억영역이 할당되는데, 할당되는 기억영역에 따라 사용범위에 제한이 있음, 이러한 기억영역을 결정하는 작업을 기억 클래스(Storage Class)라 함

  • C언어에서는 다음과 같이 5가지 종류의 기억 클래스를 제공함

  • 자동변수
  • 레지스터 변수
  • 정적 변수(내부)
  • 정적 변수(외부)
  • 외부 변수

자동 변수(Automatic Variable)

  • 자동 변수는 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수
    • 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸됨
    • 초기화하지 않으면 쓰레기값(Garbage Value)이 저장됨

외부 변수(External Variable)

  • 외부 변수는 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조 (reference)하기 위한 변수
    • 외부 변수는 함수 밖에서 선언함
    • 함수가 종료된 뒤에도 값이 소멸되지 않음
    • 초기화하지 않으면 자동으로 0으로 초기화됨
    • 다른 파일에서 선언된 변수를 참조할 경우 초기화 할 수 없음

정적 변수(Static Variable)

  • 정적 변수는 함수나 블록 내에서 선언하는 내부 정적 변수와 함수 외부에서 선언하는 외부 정적 변수가 있음
    • 내부 정적 변수는 선언한 함수나 블록 내에서만 사용할 수 잇고, 외부 정적 변수는 모든 함수에서 사용할 수 있음
    • 두 변수 모두 함수나 블록이 종료된 뒤에도 값이 소멸되지 않음
    • 초기화는 변수 선언 시 한 번만 할 수 있으며, 초기화를 생략하면 자동으로 0 으로 초기화됨

레지스터 변수(Register Variable)

  • 레지스터 변수는 메모리가 아닌 CPU내부의 레지스터에 기억영역을 할당 받는 변수
    • 자주 사용되는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용함
    • 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸됨
    • 레지스터의 사용 개수는 한정되어 있어 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급 되어 메모리에 할당 됨
    • CPU에 저장되어 메모리 주소를 가질 수 없기 때문에 변수의 주소를 구하는 주소 연산자(&)를 사용할 수 없음

연산자 우선순위

  1. 단항연산자(sizeof, –, ++, ~, !)
  2. 산술 연산자(* / %)
  3. 시프트 연산자( « »)
  4. 관계 연산자( < <= >= > , == !=)
  5. 비트연산자(& ^ )
  6. 논리 연산자(&&   )
  7. 조건 연산자(? :)
  8. 대입연산자(= += -= *= /= %= «= »= ) <-
  9. 순서 연산자( ,)

절차적 프로그래밍 언어

  • 절차적 프로그래밍 언어는 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술해 나가는 언어
    • 절차적 프로그래밍 언어는 프로그램이 실행되는 절차를 중요시함
    • 절차적 프로그래밍 언어는 데이터를 중심으로 프로시저를 구현하며, 프로그램 전체가 유기적으로 연결되어 있음
    • 절차적 프로그래밍 언어는 자연어에 가까운 단어와 문장으로 구성됨
    • 절차적 프로그래밍 언어는 과학 꼐산이나 하드웨어 제어에 주로 사용됨

절차적 프로그래밍 언어의 장 단점

  • 컴퓨터의 처리 구조와 유사하여 실행 속도가 빠름
  • 같은 코드를 복사하지 않고 다른 위치에서 호출하여 사용할 수 있음
  • 모듈 구성이 용이하며, 구조적인 프로그래밍이 가능함
  • 프로그램을 분석하기 어려움
  • 유지 보수나 코드의 수정이 어려움

객체지향 프로그래밍 언어의 개요

  • 객체지향 프로그래밍 언어는 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발 할 때도 객체들을 조립해서 프로그램을 작성할 수 있도록 한 프로그래밍 기법
    • 프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법으로, 한 프로그램을 다른 프로그램에서 이용할 수 있도록함

객체지향 프로그래밍 언어의 장단점

  • 상속을 통한 재사용과 시스템의 확장이 을이
  • 코드의 재활용성이 높음
  • 자연적인 모델링에 의해 분서고가 설계를 쉽고 효율적으로 할 수 있음
  • 사용자와 개발자 사이의 이해를 쉽게 해줌
  • 대형 프로그램의 작성이 용이함
  • 소프트웨어 개발 및 유지보수가 용이함
  • 프로그래밍 구현을 지원해 주는 정형화된 분석 및 설계 방법이 없음
  • 구현 시 처리 시간이 지연됨

스크립트 언어(Script Language)

  • 스크립트 언어는 HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것으로, 기계어로 컴파일 되지 않고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어
    • 게시판 입력, 상품 검색, 회원 가입 등과 같은 데이터베이스 처리 작업을 수행하기 위해 주로 사용
    • 스크립트 언어는 클라이언트의 웹 브라우저에서 해석되어 실행되는 클라이언트용스크립트 언어와 서버에서 해석되어 실행된 후 결과만 클라이언트로 보내는 서버용 스크립트 언어가 있음
      • 서버용 스크립트 언어 : ASP, JSP , PHP , 파이썬
      • 클라이언트용 스크립트 언어 : 자바스크립트

스크립트 언어의 장단점

  • 컴파일 없이 바로 실행하므로 결과를 바로 확인할 수 잇음
  • 배우고 코딩하기 쉬움
  • 개발 시간이 짧음
  • 소스 코드를 쉽고 빠르게 수정할 수 있음
  • 코드를 읽고 해석해야 하므로 실행 속도가 느림
  • 런타임 오류가 많이 발생함

모듈(Module) - A

  • 모듈은 모듈화를 통해 분리된 시슽메의 각 기능으로, 서부루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등을 의미함
  • 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미함
  • 모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정됨

결합도(Coupling)

  • 결합도는 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계
  • 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮음
  • 결합도의 종류와 강도 (결합도 강한순)
    • 내용 결합도, 공통 결합도, 외부 결합도, 제어 결합도, 스탬프 결합도, 자료 결합도

응집도(Cohesion)

  • 응집도는 모듈 내부 요소들이 서로 관련되어 있는 정도
  • 응집도가 강할수록 품질이 높고, 약할수록 품질이 낮음
  • 응집도의 종류와 강도(응집도 높은순)
    • 기능적 응집도, 순차적 응집도, 교환적 응집도, 절차적 응집도, 시간적 응집도, 논리적 응집도, 우연적 응집도

팬인(Fan-In) / 팬아웃(Fan-Out)

  • 팬인은 어떤 모듈을 제어하는 모듈의 수
  • 팬아웃은 어떤 모듈에 의해 제어되는 모듈의 수를 의미함
  • 팬인이 높다는 것은 재사용 측면에서 설꼐가 잘 되어있다고 볼 수 있음
  • 팬인이 높은 경우 단일 장애점이 발생할 수 있으므로 중점적인 관리 및 테스트가 필요함

Leave a comment