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문은 조건에 안맞아도 일단 실행 후 조건 체크
파이썬에는 지원하지 않음
'공부 > 정보처리기사' 카테고리의 다른 글
정보처리기사 필기 기출문제 출제유형 분석(22년 4월 기출) (0) | 2023.02.19 |
---|---|
클린코드와 TDD (0) | 2021.10.29 |
정처기 데일리공부 04 - SQL응용, 트랜잭션, DDL, DML, DCL (0) | 2021.07.01 |
정처기 데일리공부03 - 함수,클래스, 상속, 프로그래밍 언어별 특성 (0) | 2021.07.01 |
정처기 데일리 공부01 - 포맷스트링 종류 (2) | 2021.06.18 |
댓글