본문 바로가기
공부/정보처리기사

정처기 데일리공부 02 - 변수,연산자,표준함수,명령문 종류

by 매니션 2021. 6. 20.

6단원 프로그래밍 언어 활용

1. 변수 활용

변수 기초

  • 데이터 타입 : 프로그래밍 언어에서 실수형, 정수형 등 데이터를 식별하는 형태

  • 유형 (C / C++ / Java)

    • 불린(boolean) : 조건의 참,거짓을 판단 ( X / bool / boolean)
    • 문자 : 문자 하나(char)
    • 문자열 : 나열된 여러 개의 문자( char[] / string / String)
    • 정수 : 정수값(int)
    • 부동 소수점 : 소수점 포함 실숫값 (float, double - 저장공간 2배)
  • 변수 : 어떠한 값이 있을 때 그 값을 주기억장치에 기억하기 위한 공간

    초깃값 o  데이터타입 변수명 = 데이터 값;    int a = 10;
    초깃값 x  데이터타입 변수명    int a;
    
    * 초깃값이 없을 경우
    C, C++ : 쓰레기값이 들어감
    자바 : 0이 들어감(NULL)
  • 배열 : 같은 타입의 변수들로 이루어진 집합 (다른타입 : 구조체)

    C, C++
    초깃값 O     타입 배열명[배열 수];    int a[5];
    초깃값 X    타입 배열명[배열 수] = {초깃값};    int a[5] = {1,2,3,4,5}
    
    자바
    초깃값 O    타입 []배열명 = new 타입[배열 수];    int []a = new int[5];
              타입 배열명[] = new 타입[배열 수];
    초깃값 X    타입 []배열명 = {초깃값};    int []a = {1,2,3,4,5}
  • 포인터 : 변수의 주솟값을 저장하는 공간

    데이터타입*포인터변수명 = &변수명;
    데이터타입*포인터변수명 변수명; (초기화x, but초기화 안시키면 의미없음)
    
    int a = 10;
    int*b = &a;
    
    * : 포인터변수
    int* : int형만 가리키는 포인터변수
    & : 변수명 앞 &는 변수의 주소(주솟값)
    
    int*b = &a; (b라는 공간에 a의 주솟값을 저장)

자바 자료형

  • HashSet : 중복원소를 허용하지 않는 집합 성질을 가진 클래스(중복x,순서x)

    출력시 대괄호로 출력됨 [1,2]
    
    선언 : Set 변수명 = new HashSet();
          HashSet 변수명 = new HashSet();
    메서드 add(값) : 값을 추가, 중복된 값이면 무시됨
          remove(값) : 값을 제거
          size() : 원소의 개수
    
    * h.remove(1); //1을 지움(값중 1을 찾아서 제거, 순서상관x)
    
    
  • ArrayList : 크기가 가변적으로 변하는 선형리스트 성질의 클래스(순서중요index를 통해 접근)

    출력시 대괄호로 출력됨 [1,2]
    
    선언 : List 변수명 = new ArrayList();
          ArrayList 변수명 = new ArrayList();
    메서드 add(값) : 값을 추가, 중복된 값이면 중복으로 추가됨
          add(인덱스,값) : 해당 인덱스에 값을 추가
          remove(인덱스) : 해당 인덱스에 값을 제거
          size() : 원소의 개수
          get(인덱스) : 해당 인덱스의 값을 가리킴 
  • Linked List : 데이터를 저장하는 노드기 이전,다음 노드를 알고있는 링크드 리스트 자료구조를 구현한 클래스(ArrayList와 사용방법 동일, 자료 구조만 다름)

  • HashMap : 키와 값으로 구성된 객체를 저장하는 구조로 되어있는 자료구조를 구현한 클래스

    출력시 중괄호로 출력 {키=값}{1=A}
    선언 : Map 변수명 = new HashMap();
          HashMap 변수명 = newHashMap();
    메서드 put(키,값) : 해당 키에 값을 추가 
            //중복된 키에 다른 값이 들어갈 경우 덮어쓰게됨
          remove(키) : 해당 키에 값을 제거
          get(키) : 해당 키의 값을 가리킴
          size() : 원소의 개수

파이썬 자료형

파이썬은 데이터 타입을 따로 선언하지 않음 , print 출력이 끝나면 무조건 개행

  • 세트형 : 중복된 원소를 허용하지 않는 집합의 성질(중복x)

    출력시 중괄호 {'요소1','요소2'}
    
    선언 : 세트명 = set([요소1, 요소2,...])
          세트명 = {요소1, 요소2, ...}
    메서드 : add(값) : 값을 1개추가
            update([값1, 값2, ...]) : 여러 개의 값을 한 번에 추가
            remove(값) : 특정 값을 제거
  • 리스트형 : 크기가 가변적으로 변하는 선형리스트 성질(중복O,순서X-추가한순서)

    출력시 대괄호
    
    선언 : 리스트형 = [요소1, 요소2, ...]
    메서드 : append(값) : 뒤에 값을 추가
            insert(인덱스,값) : 해당 인덱스에 값을 삽입
            remove(값) : 특정 값을 제거, 여러개일 경우 가장 앞에 있는 값 제거
    • 슬라이싱

      선언 : [시작인덱스 : 종료인덱스 : 스텝]
      시작인덱스 : 시작할 인덱스, 생략시 처음부터
      종료인덱스 : 종료할 인덱스, 종료인덱스 전까지만 슬라이싱, 생략지 마지막까지
      스텝 : 몇 개씩 끊어서 할지 결정, 생략시 1
      
      a = [4,2,7,3,5]
      print(a[0 : 4 : 2])
      시작 : 0 = 4
      종료 : 4 = 3(3의 전 값인 7까지 출력)
      스텝 : 2 = 2칸씩 출력
      답 : [4,7]
  • 튜플형 : 리스트형과 유사하니, 초기에 선언된 값을 생성,삭제,수정이 불가능한 형태

    출력시 소괄호()
    선언 : 튜플명 = (요소1, 요소2)
  • 딕셔너리형 : 키와 값으로 구성된 객체를 저장하는 구조(기존의 값이 있으면 수정됨)

    출력시 중괄호{}, 문자는 ''
    선언 : 딕셔너리명 = {키1:값1,키2:값2,...}
    요소 추가,수정 : 딕셔너리명[키] = 값
    요소 삭제 : del 딕셔너리명[키]
  • 식별자 개념 : 변수,상수,함수 등 서로 구분하기 위해 사용되는 이름

    • 가능 : 영문 대/소문자, 숫자, 언더바(_),달러($)

    • 규칙 : 첫자리 숫자x, 공백불가능, 이미 사용되는 예약어 사용 불가능(대소문자 구분)

    • 구분 : 이미 사용되는 예약어 (for, if, while) - 변수명으로 사용 불가능

             대소문자 구분해서 가능(For, If, While) - 대문자로 사용 가능(권장x)
    • 식별자 표기법

      • 카멜 표기법 : 식별자 표기시 첫단어소문자, 이후 각 단어의 첫글자는 대문자(calcSumOfSquare)
      • 파스칼 표기법 : 카멜표기법과 유사하나 맨 첫글자가 대문자(CalcSumOfSquare)
      • 스네이크 표기법 : 언더바로 구분(calc_sum_of_square)
      • 헝가리안 표기법 : 식별자 표기 시에 두어에 자료형을 붙이는 표기법 (nScore-문자형 / nAge -정수형 등)

아스키 코드

아스키 코드 : 영문 알파벳을 사용하는 대표적인 문자 인코딩(표준부호)

  • 주요 아스키 코드
    • 0 = Null
    • 32 = Spacs(띄어쓰기)
    • 48 = 0 / 49 = 1
    • 65 = A / 66 = B
    • 97 = a / 98 = b

2. 연산자

  • 산술연산자 : 가장 일반적으로 사용되는 연산자 (+,-,*,/,%)

    • % : 왼쪽 값을 오른쪽으로 나눈 나머지

      • 5%2 = 1 (5/2=2...1)
      • 0%3 = 0 (3/0=1...0)
  • 시프트 연산자 : 비트(0,1)를 이동시키는 연산자(16진수로 표현)

    • << : 왼쪽 값을 오른쪽 값만큼 왼쪽으로 이동
      • 5<<2 = 101을 10100으로 변경 10100 = 20
      • 6<<1 = 110을 1100으로 변경 1100 = 12
    • '>>' : 왼쪽 값에 오른쪽 값만큼의 부호비트를 채우면서 오른쪽으로 이동
  • 관계 연산자 : 두 피 연산자 사이의 크기를 비교하는 연산자 (>,>=, ==, !=)

    • = : 대입
    • == : 같다
  • 논리연산자 : 두 피연산자 사이의 논리적인 관계를 정의

    • && : and. 두 논리값이 모두 참이면 참, 그렇지 않으면 거짓 반환
    • || : or, 두 논리값이 하나라도 참이면 참, 모두 거짓이면 거짓 반환
  • 비트연산자 : 0과1의 각 자리에 대한 연산을 수행

    • & : 두 값을 비트로 연산하여 모두 1이면 1, 아니면 0
    • | : 두 값을 비트로 연산하여 하나라도 1이면 1, 모두 0이면 0
    • ^ : 두 값을 비트로 연산하여 서로 다르면1, 그렇지 않으면 0(XOR연산)
    • ~ : 모든 비트값을 반대로 바꾸는 반전 기능
  • 대입연산자 : 변수에 값을 대입, 오른쪽 값을 왼쪽 변수에 대입 (=, +=, /=)

    • = 대입

    • += : 오른쪽 값을 더한 후 왼쪽 값에 대입

      • int a =10;

        a += 5;

        a = 15

    • /= : 오른쪽 값으로 나눈 후 몫을 대입

      • int a = 10;

        a / = 2;

        a = 10/2 = 5;

  • 증감연산자 : 피연산자를 1씩증가, 혹은 감소 시킬 때 사용하는 연산자(++n, n++,--n,n--)

    • n++,n-- : 먼저 값을 사용 후 증감
    • ++n,--n : 증감 후 값을 사용
  • 삼항연산자

    • 조건 ? 참일때 값 : 거짓일때 값;

3. 표준함수

** 작은따옴표 : 1글자(문자)

** 큰 따옴표 : 1글자이상,1글자포함(문자열)

출력함수

  • C언어

    • 단순 출력 : printf(문자열);
    • 개행 : printf("\n");
    • 변수출력 : printf(포맷스트링,변수명);
    • 처음 선언시 #include <stdio.h>
  • 포맷스트링

    • %c : 문자출력

    • %s : 문자열 출력

    • %d : 10진수 출력

    • %x : 16진수 출력

    • %o : 8진수 출력

    • %f : 실수 출력(기본 소수점6자리)

    • %[전체자리수].[소수점자리수]f : 소수점 실수출력

      • "%.2f" : 소수점 2자리까지만 출력

      • "%7.3f" : 전체7자리중 3자리만 표현

        • ex) 1.2 > ' , ',1.200 (200) 앞에2칸 공백/1/소수점/200

          전체중 뒤 3자리 = 200

  • C++ 언어

    • 단순출력 : std::cout<<문자열;
    • 개행 : std::endl;
    • 변수출력 : std::cout<<변수명;
    • using namespace std; 있으면 std:: 생략가능
    • 처음 선언시 #include
  • 자바

    • 단순출력 : System.out.printf(문자열); - 포맷스트링필요

      ​ System.out.print(문자열); - 포맷스트링x

    • 개행 : System.out.print("\n");

      ​ System.out.println(문자열);

    • 변수출력 : System.out.print(변수명);

      ​ System.out.println(변수명); //개행

      ​ System.out.printf(포맷스트링,변수명);

  • 파이썬 (따옴표 구분x)

    • 개행 : print(문자열) - 기본적으로 개행됨
    • 개행없음 : print(문자열,end='')
    • 변수출력 : print(변수명)

입력함수

  • C언어

    • 변수 입력 : scanf(포맷스트링, &변수명); // &필수
    • 문자열 입력 scanf(포맷스트링, 배열명) // 배열은 기본적으로 포인터값으로 설정되기 때문에 별도의 포인터함수(&) 필요x
  • C++

    • 변수 입력 : std::cin >> 변수명;
  • 자바

    • 정수형 입력 : Scanner 스캐너변수명 = new Scanner(System.in);

      ​ 입력받을 변수명 = 스캐너변수명.nextlnt();

    • 실수형 입력 : Scanner 스캐너변수명 = new Scanner(System.in);

      ​ 입력받을 변수명 = 스캐너변수명.nextFloat();

    • 문자열 입력 : Scanner 스캐너변수명 = new Scanner(System.in);

      ​ 입력받을 변수명 = 스캐너변수명.nextLine();

  • 파이썬

    • 문자열 입력 : 변수명 = input()

    • 숫자 입력 : 변수명 input() - 기본적으로 문자열

      ​ 변수명 = eval(변수명)

      • eval(변수명) 문자 > 숫자로 변형

4. 명령문

if문

  • 조건이 참인지 거짓인지에 따라 경로를 선택하는 명령문
  • c,c++,자바 : if / elasif / else
  • 파이썬 : if / elif / else ( if 조건문 : - 조건문이 끝나면 콜론':'을 붙여야함)
 홀짝 문제
 int score;
 if(score%2 == 0) //참이면 짝수, 거짓이면 홀수

switch문

  • 조건에 따라 여러 경로중 하나만 취하고자 할 때 사용하는 명령문
  • 파이썬 지원안됨
  • 정수형만 지원(버림)
switch식{
case 값:
    명령문;
    break; //break가 있어야 빠져나옴
default:
    명령문;
}

while문

  • 조건이 참인 동안에 반복해서 실행하는 명령문

    c,c++,자바
    while(조건문){ //명령문이 1줄일경우 중괄호{} 생략가능
        명령문;
    }
    
    파이썬
    while 조건문 : 
        명령문 //같은 라인에 있는 문장 모두 명령문으로 인식

for문

  • 반복문

    c,c++,자바
        for(초깃값;최종값;증감값){ //명령문이 1줄일경우 중괄호{} 생략가능
            명령문;
        }
        명령문 실행 후 증감(더한 후 값을 확인)i
    
    파이썬
        for 변수 in range(시작값, 끝값+1) : 
            명령문
            ex) (0,6) = 0,1,2,3,4,5
    
        for 변수 in range(반복횟수) : 
            명령문
        for 항목 in 반복가능리스트;(2021.1회 기출)

do while 문

  • while문은 조건에 부합하면 명령 실행X

  • do while문은 조건에 안맞아도 일단 실행 후 조건 체크

  • 파이썬에는 지원하지 않음

반응형

댓글