Ⅹ. 프로그래밍 언어 활용 - 기본문법 (C, C++, JAVA, 파이썬).
1. 기본 문법
1.1. C 언어
- 헤더 : #include 키워드 이용
- 표준입출력 : stdio.h 헤더 사용
#include <stdio.h>
- 문자열사용 : string.h 헤더 사용
#include <string.h>
- main 함수 : 프로그램의 시작점.
- printf : stdio.h 내의 함수로 C언어에서 출력을 위해 사용.
#include <stdio.h> //stdio는 Standard Input Output 의 약자 void main(){ // main : 프로그램 시작 위치 printf("Hello C World₩n"); // printf : 출력을 위한 C언어 함수로 큰따옴표내에 있는 글자 출력 ( ₩n : 개행) } //출력결과 : Hello C World
1.2. C++ 언어
- 헤더 : #include 키워드 이용
- 표준입출력 : iostream 헤더 사용
#include <iostream>
- 문자열사용 : string 헤더 사용
#include <string>
- C와 달리 .h 빼고 작성이 일반적
- main 함수 : 프로그램의 시작점.
- cout : iostream 내의 함수로 C++ 에서 출력을 위해 사용
# include <iostream> // iostream은 input/Output Stream의 약자 void main(){ // main : 프로그램 시작 위치 std::cout << "Hello C++ World"; // cout은 출력을 위한 C++ 함수로 << 연산을 사용하여 출력값을 연결하고, 큰따옴표 내에있는 글자를 출력 std::cout << std:endl; // endl 은 개행을 위한 함수 } //출력결과 : Hello C++ World
- using namespace std; 명령 작성시 해당 소스코드에서 네임스페이스 표현 없을 경우 std 네임스페이스에 포함된다는 것을 명시.
# include <iostream> // iostream은 input/Output Stream의 약자 using namespace std; // 네임스페이스 명시가 없을 경우 std내의 함수로 처리. void main(){ // main : 프로그램 시작 위치 out << "Hello C++ World"; // cout은 출력을 위한 C++ 함수로 << 연산을 사용하여 출력값을 연결하고, 큰따옴표 내에있는 글자를 출력 cout << std:endl; // endl 은 개행을 위한 함수 } //출력결과 : Hello C++ World
1.3. JAVA 언어
- 객체지향 언어이므로 클래스 생성해야한다.
- public class 클래스 이름 {} 구문을 통해 클래스 생성.
- main 함수는 프로그램의 시작점.
- System.out.print : JAVA에서 출력을 위해 사용.
- System.out.println : JAVA에서 출력을 위해 사용 & 출력후 개행.
public class A { // A는 클래스 명으로 파일명과 동일해야 한다(A.java) public static void main(String[] args){ // main : 프로그램 시작점 System.out.print("Hello Java World"); // 큰따옴표 안에 있는 글자 출력 } } //출력결과 : Hello Java World
1.4. 파이썬 언어
- print : 파이썬에서 출력시 사용.
print('Hello Python World') #작은따옴표 안에 있는 글자를 출력 // 출력결과 : Hello Python World
2. 데이터 타입
2.1. 문자타입
2.1.1. 포맷 스트링
- 문자형
- %c : 문자 출력
- %s : 문자열 출력
- 정수형
- %d : 10진수 출력
- %x : 16진수 출력
- %o : 8진수 출력
- 실수형
- %f : 실수 출력
2.1.2. 문자형 변수 출력
- 큰따옴표 이용 출력
출력결과 > a
C
#include <stdio.h> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 printf("a₩n"); // a 라는 문자를 출력 }
C++
#include <iostream> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 std::cout << "a" << std::endl; // a 라는 문자를 출력 }
JAVA
public static void main(String[] args){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 System.out.println("a"); // a 라는 문자를 출력 }
파이썬
a = 'B' # 변수 a에 'B'라는 문자를 저장 print('a') # a 라는 문자를 출력
- C언어의 경우 포맷스트링을 이용하여 출력하지 않는다면 큰따옴표 안에 있는 문자를 그대로 출력.
- C언어를 제외한 다른 언어들은 큰따옴표 안에 있는 문자를 그대로 출력.
- 변수 이용하여 출력
출력결과 > B
C
#include <stdio.h> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 printf("%c₩n", a); // a 라는 변수에 저장되어 있는 값을 문자(%c)타입으로 출력 }
C++
#include <iostream> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 std::cout << a << std::endl; // a 라는 변수에 저장되어 있는 값 출력 }
JAVA
public static void main(String[] args){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 System.out.println(a); // a 라는 변수에 저장되어 있는 값 출력 }
파이썬
a = 'B' # 변수 a에 'B'라는 문자를 저장 print(a) # a 라는 변수에 저장되어 있는 값 출력
- 큰따옴표 안의 문자 + 변수 이용 출력
출력결과 > a: B
C
#include <stdio.h> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 printf("a: %c₩n", a); // a 라는 변수에 저장되어 있는 값을 문자(%c)타입으로 출력하고 따옴표 안의 글자 출력 }
C++
#include <iostream> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 std::cout << "a: " << a << std::endl; // "a: "라는 문자열을 출력하고 a 라는 변수에 저장되어 있는 값 출력 }
JAVA
public static void main(String[] args){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 System.out.println("a: "+a); // "a: "라는 문자열을 출력하고 a 라는 변수에 저장되어 있는 값 출력(+는 두 결괏값 붙일때 사용) }
파이썬
a = 'B' # 변수 a에 'B'라는 문자를 저장 print('a: ', a) # "a: "라는 문자열을 출력하고 a 라는 변수에 저장되어 있는 값 출력(콤마는 두 결괏값 붙일때 사용)
2.2. 정수 타입
2.2.1. 아스키코드(ASCII; American Standard Code Information Interchange code)
문자 10진수 16진수 NULL(‘₩0’) 0 0 SPACE(‘ ‘) 32 20 ‘0’ 48 30 ‘1’ 49 31 … … … ‘9’ 57 39 ‘A’ 65 41 ‘B’ 66 42 … … … ‘Z’ 90 5A ‘a’ 97 61 ‘b’ 98 62 … … … ‘z’ 122 7A 2.2.2. 정수형 변수 출력
- 정수 : int 키워드 이용
출력결과 > a: 5
C
#include <stdio.h> void main(){ int a = 5; //변수 a에 5라는 정숫값 저장 printf("a: %d₩n", a); // a 라는 변수에 저장되어 있는 값을 정수(%d)타입으로 출력하고 따옴표 안의 글자 출력 }
C++
#include <iostream> void main(){ int a = 5; //변수 a에 5라는 정숫값 저장 std::cout << "a: " << a ; // "a: "라는 문자열을 출력하고 a 라는 변수에 저장되어 있는 값 출력 std::cout << std::endl; // 한줄 개행 }
JAVA
public static void main(String[] args){ int a = 5; //변수 a에 5라는 정숫값 저장 System.out.println("a: "+a); // "a: "라는 문자열을 출력하고 a 라는 변수에 저장되어 있는 값 출력(+는 두 결괏값 붙일때 사용) }
파이썬
a = 5 # 변수 a에 5라는 정숫값 저장 print('a: ', a) # "a: "라는 문자열을 출력하고 a 라는 변수에 저장되어 있는 값 출력(콤마는 두 결괏값 붙일때 사용)
2.2.3. 정수와 문자와의 관계
문자변수를 정수와 문자로 표현하는 예제.
출력결과 > 66 B
C
#include <stdio.h> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 printf("%d %c₩n", a, a); // a라는 변수에 저장되어 있는 값을 정수(%d), 문자(%c) 출력 }
C++
#include <iostream> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 std::cout << (int)a << " "; // a라는 변숫값을 int(정수)형으로 강제 변환하여 출력 std::cout << a << std::endl; // a라는 변숫값을 출력 & 개행 }
JAVA
public static void main(String[] args){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 System.out.println(""+(int)a+" "+a); //a라는 변숫값을 int(정수)형으로 강제 변환하여 출력한값과 a라는 변숫값을 출력 }
파이썬
a = 'B' # 변수 a에 'B'라는 문자를 저장 print(ord(a), a) # a라는 변숫값을 ord함수를 이용해 아스키코드값으로 출력하고 a 변수에 저장된 값을 출력
문자형 변수에 값을 더하거나 뺀 후 해당 변수의 값을 문자로 출력 예제.
출력결과 > A C
C
#include <stdio.h> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 printf("%c %c₩n", a-1, a+1); // a라는 변수에 저장되어 있는 값을 1뺀 값과 1더한 값을 문자(%c)타입으로 출력 }
C++
#include <iostream> void main(){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 std::cout << (char)((int)a-1); // a라는 변수에 저장되어 있는 값을 1을 뺀 문자로 출력 std::cout << " "; // 공백 문자 출력 std::cout << (char)((int)a+1); // a라는 변수에 저장되어 있는 값을 1을 더한 문자로 출력 std::cout << std::endl; // 개행 }
JAVA
public static void main(String[] args){ char a = 'B'; //변수 a에 'B'라는 문자를 저장 System.out.println((char)(a-1)+" "+(char)(a+1)); //a라는 변수에 저장되어 있는 값에 1을 뺀 값과 1을 더한 값을 문자로 출력 }
파이썬
a = 'B' # 변수 a에 'B'라는 문자를 저장 print(chr(ord(a)-1), chr(ord(a)+1)) # a라는 볏숫값을 ord함수를 이용해 아스키값으로 변경 후 1을 빼거나 더한값을 chr함수를 이용해 문자로 출력
2.2.4. 진법
- 수를 표기하는 기수법으로 컴퓨터에서는 2진수 형태로 저장하고 8진수, 10진수, 16진수 형태로 출력이 가능.
10진수와 다른 진수와 관계
10진수 2진수 8진수 16진수 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 2.2.5. 진법 출력
- C언어, C++, 자바 진법 출력
- C
#include <stdio.h> void main(){ int a = 11; //변수 a 정수 11 저장 printf("%x₩n", a); //변수 a 16진수(%x) 출력 printf("%d₩n", a); //변수 a 10진수(%d) 출력 printf("%o₩n", a); //변수 a 8진수(%o) 출력
- C++
#include <iostream> using namespace std; //std 네이스페이스를 사용한다고 선언(cout, endl을 간단히 쓰기위해) void main(){ int a = 11; //변수에 11 저장 cout << hex << a << endl; //변수 a에 저장된 값을 16진수 출력 cout << dec << a << endl; //변수 a에 저장된 값을 10진수 출력 cout << oct << a << endl; //변수 a에 저장된 값을 8진수 출력 }
- JAVA
public static void main(String[] args){ int a = 11; System.out.println(Integer.toHexString(a)); //변수 a에 저장된 값을 16진수 출력 System.out.println(a); //변수 a에 저장된 값을 10진수 출력 System.out.println(Integer.toOctalString(a)); //변수 a에 저장된 값을 8진수 출력 }
// 출력 결과 b 11 13
- 파이썬 진법 출력
파이썬의 경우 16진수 출력시 0x 가 붙고, 8진수 출력시 0o가 붙는다
a = 11 print(hex(a)) #변수 a에 저장된 값을 16진수 출력 print(a) #변수 a에 저장된 값을 10진수 출력 print(oct(a)) #변수 a에 저장된 값을 8진수 출력
// 출력 결과 0xb 11 0o13
3. 연산자
3.1. 산술 연산자 - 사직연산
- C언어, C++, Java 사칙연산
C 사칙연산
#include <stdio.h> void main(){ int a = 7, b = 3; // 변수 a에 7, b에 3 저장 printf("%d₩n", a+b); //a와 b 합 출력 printf("%d₩n", a-b); //a에서 b를 뺀값 출력 printf("%d₩n", a*b); //a와 b의 곱한 결과 출력 printf("%d₩n", a/b); //a를 b로 나눔(정수와 정수를 연산하면 정숫값이라 소수점에 해당값은 버림) printf("%d₩n", a%b); //a를 b로 나눈 나머지 출력 }
C++ 사칙연산
#include <iostream> void main(){ int a = 7, b = 3; // 변수 a에 7, b에 3 저장 std::cout << a+b << std::endl; //a와 b 합 출력 std::cout << a-b << std::endl; //a에서 b를 뺀값 출력 std::cout << a*b << std::endl; //a와 b의 곱한 결과 출력 std::cout << a/b << std::endl; //a를 b로 나눔(정수와 정수를 연산하면 정숫값이라 소수점에 해당값은 버림) std::cout << a%b << std::endl; //a를 b로 나눈 나머지 출력 }
JAVA 사칙연산
public static void main(String[] args){ int a = 7, b = 3;; // 변수 a에 7, b에 3 저장 System.out.println(a+b); //a와 b 합 출력 System.out.println(a-b); //a에서 b를 뺀값 출력 System.out.println(a*b); //a와 b의 곱한 결과 출력 System.out.println(a/b); //a를 b로 나눔(정수와 정수를 연산하면 정숫값이라 소수점에 해당값은 버림) System.out.println(a%b); //a를 b로 나눈 나머지 출력 }
//출력 결과 10 4 21 2 1
파이썬 사칙연산
a = 7 #변수 a에 7 저장 b = 3 #변수 b에 3 저장 print(a+b) #a와 b 합 출력 print(a-b) #a에서 b를 뺀값 출력 print(a*b) #a와 b의 곱한 결과 출력 print(a/b) #a를 b로 나눔 print(a%b) #a를 b로 나눈 나머지 출력
//출력 결과 10 4 21 2.333333 1
3.2. 시프트 연산자
- 시프트 연산자는 비트를 이동시키는 연산자
- C
#include <stdio.h> void main(){ int a = 10; //변수 a에 10 저장 printf("%d₩n", a<<2); //a를 왼쪽으로 2비트 이동한 결과를 10진수로 출력 printf("%d₩n", a>>2); //a를 오른쪽으로 2비트 이동한 결과를 10진수로 출력 }
- C++
#include <iostream> void main(){ int a = 10; //변수 a에 10 저장 std::cout << (a<<2) << std::endl; //a를 왼쪽으로 2비트 이동한 결과를 10진수로 출력 std::cout << (a>>2) << std::endl; //a를 오른쪽으로 2비트 이동한 결과를 10진수로 출력 }
- JAVA
public static void main(String[] args){ int a = 10; //변수 a에 10 저장 System.out.println(a<<2); //a를 왼쪽으로 2비트 이동한 결과를 10진수로 출력 System.out.println(a>>2); //a를 오른쪽으로 2비트 이동한 결과를 10진수로 출력 }
- 파이썬
a = 10 #변수 a에 10 저장 print(a<<2) #a를 왼쪽으로 2비트 이동한 결과를 10진수로 출력 print(a>>2) #a를 오른쪽으로 2비트 이동한 결과를 10진수로 출력
//출력 결과 40 2
- a라는 변수를 2진수로 나타내면 다음과 같다
10진수 : 10 a 2진수 … 0 0 1 0 1 0 10진수 : 40 a « 2 … 1 0 1 0 0 0 2진수 비트들이 왼쪽으로 2칸 이동 10진수 : 2 a » 2 … 0 0 0 0 1 0 2진수 비트들이 오른쪽으로 2칸 이동
(기존 오른쪽 두개는 사라짐)
3.3. 관계 연산자
- C언어, C++ 관계 연산자
결과 > 0 또는 1
- C
#include <stdio.h> void main(){ int a = 10, b = 5; //변수 a는 10, b는 5 저장 printf("%d₩n", a>b); //a>b는 참이므로 1 출력 printf("%d₩n", a<b); //a<b는 거짓이므로 0 출력 printf("%d₩n", a==b); //a==b는 거짓이므로 0 출력 printf("%d₩n", a!=b); //a!=b는 참이므로 1 출력 }
- C++
#include <iostream> void main(){ int a = 10, b = 5; //변수 a는 10, b는 5 저장 std::cout << (a>b) << std::endl; //a>b는 참이므로 1 출력 std::cout << (a<b) << std::endl; //a<b는 거짓이므로 0 출력 std::cout << (a==b) << std::endl; //a==b는 거짓이므로 0 출력 std::cout << (a!=b) << std::endl; //a!=b는 참이므로 1 출력 }
//출력 결과 1 0 0 1
- Java 관계 연산자
결과 > true 또는 false
- Java
public static void main(String[] args){ int a = 10, b = 5; //변수 a는 10, b는 5 저장 System.out.println(a>b); //a>b는 참이므로 true 출력 System.out.println(a<b); //a<b는 거짓이므로 false 출력 System.out.println(a==b); //a==b는 거짓이므로 false 출력 System.out.println(a!=b); //a!=b는 참이므로 true 출력 }
//출력 결과 true false false true
- 파이썬 관계 연산자
결과 > True 또는 False
- 파이썬
a = 10 #변수 a에 10 저장 b = 5 #변수 b에 5 저장 print(a>b) #a>b는 참이므로 True 출력 print(a<b) #a<b는 거짓이므로 False 출력 print(a==b) #a==b는 거짓이므로 False 출력 print(a!=b) #a!=b는 참이므로 True 출력
//출력 결과 True False False True
3.4. 논리 연산자
- 두 피연산자 사이의 논리적 관계를 정의하는 연산자.
- C언어, C++ 논리 연산자
결과 > 0 또는 1
- C
#include <stdio.h> void main(){ int a = 0, b = 1; //변수 a는 0, b는 1 저장 printf("%d₩n", a && b); //a는 0이기 때문에 False, b는 1이기 때문에 True로 인식, AND 조건이므로 False인 0 출력 printf("%d₩n", a || b); //OR 조건이므로 True인 1 출력 }
- C++
#include <iostream> void main(){ bool a = false, b = true; //변수 a는 false, b는 true 저장 std::cout << (a&&b) << std::endl; //AND 조건이므로 False인 0 출력 std::cout << (a||b) << std::endl; //OR 조건이므로 True인 1 출력 }
//출력 결과 0 1
- Java 관계 연산자
결과 > true 또는 false
- Java
public static void main(String[] args){ boolean a = false, b = true; //a에 false, b에 true 저장 System.out.println(a&&b); //AND 조건이므로 false 출력 System.out.println(a||b); //OR 조건이므로 ture 출력 }
//출력 결과 false true
- 파이썬 관계 연산자
결과 > True 또는 False
- 파이썬
a = False #변수 a에 False 저장 b = True #변수 b에 True 저장 print(a&&b) #AND 조건이므로 False 출력 print(a||b) #OR 조건이므로 True 출력
//출력 결과 False True
3.5. 비트 연산자
비트연산자는 0과 1 각자리에 대한 연산을 수행하며, 0 또는 1의 결과값을 갖는 연산자
a & b : AND 연산
변수 2진수 (23) 2진수 (22) 2진수 (21) 2진수 (20) 10진수 a 1 0 1 0 10 b 1 0 0 1 9 a&b 1 0 0 0 8 a | b : OR 연산
변수 2진수 (23) 2진수 (22) 2진수 (21) 2진수 (20) 10진수 a 1 0 1 0 10 b 1 0 0 1 9 a|b 1 0 1 1 11 - C 비트연산
#include <stdio.h> void main(){ int a = 10, b = 9; //변수 a는 10, b는 9 저장 printf("%d₩n", a&b); // a&b 비트 연산 (1010 & 1001 = 1000) / 각 자리 AND 연산 printf("%d₩n", a|b); // a|b 비트 연산 (1010 & 1001 = 1011) / 각 자리 OR 연산 }
- C++ 비트 연산
#include <iostream> void main(){ int a = 10, b = 9; //변수 a는 10, b는 9 저장 std::cout << (a&b) << std::endl; // a&b 비트 연산 (1010 & 1001 = 1000) / 각 자리 AND 연산 std::cout << (a|b) << std::endl; // a|b 비트 연산 (1010 & 1001 = 1011) / 각 자리 OR 연산 }
- JAVA 비트연산
public static void main(String[] args){ int a = 10, b = 9; //변수 a는 10, b는 9 저장 System.out.println(a&b); // a&b 비트 연산 (1010 & 1001 = 1000) / 각 자리 AND 연산 System.out.println(a|b); // a|b 비트 연산 (1010 & 1001 = 1011) / 각 자리 OR 연산 }
- 파이썬 비트 연산
a = 10 #변수 a는 10 저장 b = 9 #변수 b는 9 저장 print(a&b) # a&b 비트 연산 (1010 & 1001 = 1000) / 각 자리 AND 연산 print(a|b) # a|b 비트 연산 (1010 & 1001 = 1011) / 각 자리 OR 연산
//출력 결과 8 11
3.6. 대입 연산자
- 대입연산자는 변수에 값을 대입할 때 사용하는 연산자이며 오른쪽에 있는 값을 이용해 왼쪽의 변수에 값을 대입한다.
- C, C++, 자바 대입연산
- C 대입연산
#include <stdio.h> void main(){ int a = 10; // a에 10 대입 a += 4; // a = a+4와 동일, 저장된 숫자 10에 + 4 printf(%d₩n", a); // a 출력 a /= 2; // a = a/2와 동일, 저장된 숫자 14를 2로 나눔 printf(%d₩n", a); // a 출력 }
- C++ 대입연산
#include <iostream> void main(){ int a = 10; // a에 10 대입 a += 4; // a = a+4와 동일, 저장된 숫자 10에 + 4 std::cout << a << std::endl; // a 출력 a /= 2; // a = a/2와 동일, 저장된 숫자 14를 2로 나눔 std::cout << a << std::endl; // a 출력 }
- Java 대입연산
public static void main(String[] args){ int a = 10; // a에 10 대입 a += 4; // a = a+4와 동일, 저장된 숫자 10에 + 4 System.out.println(a); // a 출력 a /= 2; // a = a/2와 동일, 저장된 숫자 14를 2로 나눔 System.out.println(a); // a 출력 }
//출력 결과 14 7
- 파이썬 대입연산
- Python
a = 10 // a에 10 대입 a += 4 // a = a+4와 동일, 저장된 숫자 10에 + 4 print(a) // a 출력 a /= 2 // a = a/2와 동일, 저장된 숫자 14를 2로 나눔 print(a) // a 출력(파이썬에서는 나누기를 하면 실수로 결과가 나온다)
//출력 결과 14 7.0
3.7. 증감 연산자
- 피연산자를 1씩 증가 혹은 1씩 감소시킬때 사용하는 연산자.
- 파이썬에는 해당 연산자가 존재하지 않는다.
- C 증감연산
#include <stdio.h> void main(){ int a = 10; // a 에 10 대입 a++; // a++ 로 a 1증가 printf("%d₩n", a); //a 출력 (11) a--; // a-- 로 a 1감소 printf("%d₩n", a); //a 출력 (10) }
- C++ 증감연산
#include <iostream> void main(){ int a = 10; // a 에 10 대입 a++; // a++ 로 a 1증가 std::cout << a << std::endl; //a 출력 (11) a--; // a-- 로 a 1감소 std::cout << a << std::endl; //a 출력 (10) }
- Java 증감연산
public static void main(String[] args){ int a = 10; // a 에 10 대입 a++; // a++ 로 a 1증가 System.out.println(a); //a 출력 (11) a--; // a-- 로 a 1감소 System.out.println(a); //a 출력 (10) }
//출력 결과 11 10
4. 조건문
4.1. if문
- 조건이 참인지 거짓인지에 따라 경로를 선택하는 명령문
if ~ else if ~ else 형태
- C if문
#include <stdio.h> void main(){ int a = 10; //a 에 10 대입 if( a % 2 == 0 ) // a를 2로 나눴을때 나머지가 0이면 짝수 printf("짝수₩n"); else //if 조건에 해당하지 않으면 홀수 printf("홀수₩n"); }
- C++ if문
#include <iostream> void main(){ int a = 10; //a 에 10 대입 if( a % 2 == 0 ) // a를 2로 나눴을때 나머지가 0이면 짝수 std::cout << "짝수" << std::endl; else //if 조건에 해당하지 않으면 홀수 std::cout << "홀수" << std::endl; }
- Java if문
public static void main(String[] args){ int a = 10; //a 에 10 대입 if( a % 2 == 0 ) // a를 2로 나눴을때 나머지가 0이면 짝수 System.out.println("짝수"); else //if 조건에 해당하지 않으면 홀수 System.out.println("홀수"); }
- 파이썬 if문
a = 10 # a 에 10 대입 if a%2 == 0: # a를 2로 나눴을때 나머지가 0이면 짝수 print('짝수') else: # if 조건에 해당하지 않으면 홀수 print('홀수')
//출력 결과 짝수
4.2. switch ~ case 문
- 조건에 따라 여러개의 선택 경로 중 하나를 취하고자 할때 사용하는 명령.
파이썬에서는 switch ~ case 문이 존재하지 않는다.
- C switch문
#include <stdio.h> void main(){ int a = 10; //a 에 10 대입 switch(a%2){ // a%2 결과에 따라 case로 이동 case 0 : printf("짝수₩n"); break; case 1 : printf("홀수₩n"); }
- C++ switch문
#include <iostream> void main(){ int a = 10; //a 에 10 대입 switch(a%2){ // a%2 결과에 따라 case로 이동 case 0 : std::cout << "짝수" << std::endl; break; case 1 : std::cout << "홀수" << std::endl; }
- Java switch문
public static void main(String[] args){ int a = 10; //a 에 10 대입 switch( a % 2){ // a%2 결과에 따라 case로 이동 case 0 : System.out.println("짝수"); break; case 1 : System.out.println("홀수"); } }
//출력 결과 짝수
5. 반복문
5.1. for문
for문은 초깃값, 최종값, 증감 값을 지정하여 반복을 실행하는 명령문.
- C 구구단 for문
#include <stdio.h> void main(){ int i; //for문에 사용할 변수 선언 int a = 4; // a에 4 대입 for(i=1; i <= 9; i++) // i가 1부터 9까지 1씩 증가 printf("%d * %d = %d₩n", a, i, a*i); }
- C++ 구구단 for문
#include <iostream> using namespace std; void main(){ int i; //for문에 사용할 변수 선언 int a = 4; // a에 4 대입 for(i=1; i <= 9; i++){ // i가 1부터 9까지 1씩 증가 cout << a << " * " << i << " = "; cout << a*i << endl; } }
- Java 구구단 for문
public static void main(String[] args){ int i; //for문에 사용할 변수 선언 int a = 4; // a에 4 대입 for(i=1; i <= 9; i++){ // i가 1부터 9까지 1씩 증가 System.out.println(a + " * " + i + " = " + (a*i)); } }
- 파이썬 구구단 for문
a = 4 # a에 4 대입 for i in rang(1, 10) : # i가 1부터 9까지 실행 print(a, ' * ', i, ' = ', a*i)
//출력 결과 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 ... 4 * 9 = 36
5.2. while 문
시작과 종료 조건을 지정하여 참인 동안에는 해당 문장을 반복해서 실행하는 명령문.
- C 구구단 while문
#include <stdio.h> void main(){ int i; //for문에 사용할 변수 선언 int a = 4; // a에 4 대입 while(i<=9) // i <= 9 만족할때까지 실행 printf("%d * %d = %d₩n", a, i, a*i); i++ }
- C++ 구구단 while문
#include <iostream> using namespace std; void main(){ int i; //for문에 사용할 변수 선언 int a = 4; // a에 4 대입 while(i<=9) // i <= 9 만족할때까지 실행 cout << a << " * " << i << " = "; cout << a*i << endl; i++; } }
- Java 구구단 while문
public static void main(String[] args){ int i; //for문에 사용할 변수 선언 int a = 4; // a에 4 대입 while(i<=9) // i <= 9 만족할때까지 실행 System.out.println(a + " * " + i + " = " + (a*i)); i++; } }
- 파이썬 구구단 while문
a = 4 # a에 4 대입 while i<=9 # i <= 9 만족할때까지 실행 print(a, ' * ', i, ' = ', a*i) i = i+1 # i 값 1증가
//출력 결과 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 ... 4 * 9 = 36
6. 루프제어문
6.1. break
break는 반복문이나 switch문을 중간에 탈출하기 위해 사용하는 명령어.
- C break 예제
#include <stdio.h> void main(){ int i=0; // i에 0 저장 while(1){ // 조건 1은 항상 참으로 무한 반복 printf("%d₩n", i); // i 출력 i++; // i 1 증가 if(i>=5) // i >= 5 이면 반복문 탈출 break; } }
- C++ break 예제
#include <iostream> void main(){ int i=0; // i에 0 저장 while(1){ // 조건 1은 항상 참으로 무한 반복 std::cout << i << std::endl; // i 출력 i++; // i 1 증가 if(i>=5) // i >= 5 이면 반복문 탈출 break; } }
- Java break 예제
public static void main(String[] args){ int i=0; // i에 0 저장 while(true){ // 조건이 true 이므로 무한반복 System.out.println(i) // i 출력 i++; // i 1 증가 if(i>=5) // i >= 5 이면 반복문 탈출 break; } }
- 파이썬 break 예제
i = 0 # i에 0 저장 while True: # 조건이 True 이므로 무한반복 print(i) # i 출력 i=i+1 # i 1 증가 if i>= 5 : # i >= 5 이면 반복문 탈출 break
//출력 결과 0 1 2 3 4
6.2. continue
continue는 반복문에서 다음 반복으로 넘어갈 수 있도록 하는 명령어이다.
- C continue 예제
#include <stdio.h> void main(){ int i; //for문에 사용할 변수 선언 for(i=0; i < 100; i++) // i가 0부터 99까지 반복 if(i%3==0) // i를 3으로 나눈 나머지가 0이면 다음 반복 수행 continue; printf("%d₩n", i); // i 출력 }
- C++ continue 예제
#include <iostream> using namespace std; void main(){ int i; //for문에 사용할 변수 선언 for(i=0; i < 100; i++) // i가 0부터 99까지 반복 if(i%3==0) // i를 3으로 나눈 나머지가 0이면 다음 반복 수행 continue; cout << i << endl; // i 출력 } }
- Java continue 예제
public static void main(String[] args){ int i; //for문에 사용할 변수 선언 for(i=0; i < 100; i++) // i가 0부터 99까지 반복 if(i%3==0) // i를 3으로 나눈 나머지가 0이면 다음 반복 수행 continue; System.out.println(i); // i 출력 } }
- 파이썬 continue 예제
for i in rang(0, 100) : # i가 0부터 99까지 실행 if i%3==0: # i를 3으로 나눈 나머지가 0이면 다음 반복 수행 continue print(i) # i 출력
//출력 결과 1 2 4 5 7 8 10 ... 98
7. 배열 / 리스트
7.1. 배열/리스트 개념
- 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진 자료 구조이다.
- ex. int a[5] = {4, 2, 1, 3, 7};
a[3] = 3
a[1] = 2
7.2. 배열의 활용
- C, C++, 자바에서는 배열을 통해 같은 데이터 타입을 저장.
파이썬은 리스트를 통해 같거나 다른 데이터 타입을 저장.
- C 배열 예제
#include <stdio.h> void main(){ int i; // for 문에 사용될 변수 int sum = 0; // 배열의 합을 저장할 변수 int a[5] = {4, 2, 1, 7, 10}; // 5개의 요소를 가진 배열 for(i=0; i < 5; i++){ sum += a[i]; // i번째 인덱스 요솟값을 sum이라는 변수에 더함 } printf("%d₩n", sum); // sum 출력 }
- C++ 배열 예제
#include <iostream> void main(){ int i; // for 문에 사용될 변수 int sum = 0; // 배열의 합을 저장할 변수 int a[5] = {4, 2, 1, 7, 10}; // 5개의 요소를 가진 배열 for(i=0; i < 5; i++){ sum += a[i]; // i번째 인덱스 요솟값을 sum이라는 변수에 더함 } std::cout << sum << std::endl; // sum 출력 }
- Java 배열 예제
public static void main(String[] args){ int i; // for 문에 사용될 변수 int sum = 0; // 배열의 합을 저장할 변수 int a[] = {4, 2, 1, 7, 10}; // 5개의 요소를 가진 배열 for(i=0; i < 5; i++){ sum += a[i]; // i번째 인덱스 요솟값을 sum이라는 변수에 더함 } System.out.println(sum); // sum 출력 }
- 파이썬 배열 예제
sum = 0 # 배열의 합을 저장할 변수 a = [4, 2, 1, 7, 10] # 5개의 요소를 가진 배열 for i in range(0, 5) sum += a[i] # i번째 인덱스 요솟값을 sum이라는 변수에 더함 print(sum) # sum 출력
//출력 결과 24
7.3. 2차원 배열
- ex. int a[2][2] = {{4, 2}, {3, 5}};
a[1][0] = 3
a[0][0] = 4
7.4. 2차원 배열 활용
- C, C++, Java 2차원 배열 덧셈 예제
- C 2차연배열 덧셈
#include <stdio.h> void main(){ int i, j; // for문 제어 변수 int a[2][2] = { {1, 2},{3, 4} }; // a 2차원 배열 int b[2][2] = { {1, 2},{3, 4} }; // b 2차원 배열 int c[2][2]; // a와 b를 더한값을 저장할 2차원 배열 for(i=0; i < 2; i++){ for(j=0; j < 2; j++){ c[i][j] = a[i][j] + b[i][j]; // a와 b의 같은 인덱스에 있는 값을 더한 후 c의 같은 인덱스에 저장 } } for(i=0; i < 2; i++){ for(j=0; j < 2; j++){ printf("%d₩n", c[i][j]); // c에 저장된 결과값 출력 } } }
- C++ 2차연배열 덧셈
#include <iostream> void main(){ int i, j; // for문 제어 변수 int a[2][2] = { {1, 2},{3, 4} }; // a 2차원 배열 int b[2][2] = { {1, 2},{3, 4} }; // b 2차원 배열 int c[2][2]; // a와 b를 더한값을 저장할 2차원 배열 for(i=0; i < 2; i++){ for(j=0; j < 2; j++){ c[i][j] = a[i][j] + b[i][j]; // a와 b의 같은 인덱스에 있는 값을 더한 후 c의 같은 인덱스에 저장 } } for(i=0; i < 2; i++){ for(j=0; j < 2; j++){ std::cout << c[i][j] << std::endl; // c에 저장된 결과값 출력 } } }
- Java 2차연배열 덧셈
public static void main (String[] args){ int i, j; // for문 제어 변수 int[][] a = { {1, 2},{3, 4} }; // a 2차원 배열 int[][] b = { {1, 2},{3, 4} }; // b 2차원 배열 int[][] c = new int[2][2]; // a와 b를 더한값을 저장할 2차원 배열 for(i=0; i < 2; i++){ for(j=0; j < 2; j++){ c[i][j] = a[i][j] + b[i][j]; // a와 b의 같은 인덱스에 있는 값을 더한 후 c의 같은 인덱스에 저장 } } for(i=0; i < 2; i++){ for(j=0; j < 2; j++){ System.out.println(c[i][j]); // c에 저장된 결과값 출력 } } }
//출력 결과 2 4 6 8
- 파이썬 2차원 배열 덧셈 예제
- Python
a = [[1, 2],[3, 4]] // a 2차원 배열 b = [[1, 2],[3, 4]] // b 2차원 배열 c = [] // a와 b를 더한값을 저장할 2차원 배열 for i in range(0, 2) for j in range(0, 2) c.append(a[i][j] + b[i][j]) // a와 b의 같은 인덱스에 있는 값을 더한 후 c의 같은 인덱스에 저장 print(c); // 2차원 배열인 c에 저장된 결과값 출력
//출력 결과 [2, 4, 6, 8]
8. 사용자 정의 함수
8.1. 사용자 정의 함수 개념
- 사용자 정의 함수는 프로그램이나 환경의 사용자가 제공하는 함수이다.
- 사용자 정의 함수는 함수명, 함수의 입력값(파라미터), 함수의 출력값(리턴)으로 구성되어있다.
- 사용자 정의 함수 형태
출력타입 함수명(입력값들){ ... (생략) return 출력값; }
8.2. 사용자 정의 함수 활용
- C언어와 C++은 함수의 본체를 소스 코드 하단부에 적을 경우 상단부에 함수는 어떤 형태로 구성되어 있는지 알려주기 위한 선언을 해야 한다.
sum이라는 함수로 두개의 int형 입력값을 받고 결과로 int형을 반환하는 함수 예제
- C 사용자 정의 함수 예제
#include <stdio.h> int sum(int a, int b); // C언어, C++ 에서는 사용자 정의 함수를 어떤 형태로 사용할지 상단에 선언해 주어야한다 void main(){ printf("%d₩n", sum(4, 3)); // sum 함수에 4와 3을 입력값으로 넣었을때 결과값 출력 } int sum(int a, int b){ // sum의 입력값은 a와 b에 저장되고 a 와 b를 더한 값을 반환하는 사용자 정의 함수 return a+b; }
- C++ 사용자 정의 함수 예제
#include <iostream> int sum(int a, int b); // C언어, C++ 에서는 사용자 정의 함수를 어떤 형태로 사용할지 상단에 선언해 주어야한다 void main(){ std::cout << sum(4, 3) << std::endl; // sum 함수에 4와 3을 입력값으로 넣었을때 결과값 출력 } int sum(int a, int b){ // sum의 입력값은 a와 b에 저장되고 a 와 b를 더한 값을 반환하는 사용자 정의 함수 return a+b; }
- Java 사용자 정의 함수 예제
public static void main(String[] args){ System.out.println(sum(4, 3)); // sum함수에 4와 3을 입력값으로 넣었을때 결과 출력 } public static int sum(int a, int b){ // sum의 입력값은 a와 b에 저장되고 a 와 b를 더한 값을 반환하는 사용자 정의 함수 return a+b; }
- 파이썬 사용자 정의 함수 예제
def sum (a, b) : # sum의 입력값은 a와 b에 저장되고 a 와 b를 더한 값을 반환하는 사용자 정의 함수 return a+b print(sum(4,3)) # sum함수에 4와 3을 입력값으로 넣었을때 결과 출력
//출력 결과 7
- 정보처리기사 필기 합격 후 실기대비 정리 및 책없이 간단히 보기위해 작성하였습니다.
- 2020년 수제비 정보처리기사 책 기반으로 정리 하였습니다.
- 저작권 관련 문제가 있다면 hojunbbaek@gmail.com 으로 메일 주시면 바로 삭제 조치 하도록 하겠습니다.
[정보처리기사 실기] Ⅹ. 프로그래밍 언어 활용- 기본문법(C, C++, JAVA, 파이썬). (feat.수제비)