- 데이터 입.출력
- 키보드로부터 데이터를 입력받아 화면이나 파일로 출력하는 것
- C : scanf, printf
- JAVA : Scanner, nextInt, printf, println
- C 예제
#include <stdio.h>
main()
{
int i, j, k;
scanf("%d %d", &i, &j);
k = i + j;
printf("%d\n", k);
}
- include <stdio.h> : 표준 입.출력과 관련된 함수를 정의해 놓은 헤더 파일
- scanf("%d %d", &i, &j) : 앞의 %d = i의 값, 뒤의 %d = j의 값
- JAVA 예제
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
System.out.printf("a * 3 = %d\n", a*3);
System.out.println("a / 2 = " + (a/2));
System.out.print("a - 1 = " + (a-1));
scan.close();
}
}
- Scanner scan = new Scanner(System.in)
- Scanner : 입력에 사용할 객체 변수를 생성할 떄 사용하는 클래스 이름
- scan : 객체 변수명
- new : 객체 생성 예약어
- Scanner() : 클래스의 이름
- System.in : 표준 입력장치 즉, 키보드를 의미
- nextInt() : 입력값을 정수형으로 반환
- 헝가리안 표기법
- 변수의 자료형을 알 수 있도록 자료형을 의미하는 문자를 포함하여 작성하는 방법
- 주요 제어 문자
- \n : 한 줄 띄움
- \t : 일정 간격 띄움
- \0 : 널 문자 출력
- C_ 1
#include <stdio.h>
main() {
int i = 10, j = 10, k = 30;
① i /= j;
② j -= i;
③ k %= j;
④ printf("%d, %d, %d\n", i, j, k);
}
- ① : i = i / j → 10 / 10 ==> i = 1
- ② : j = j - i → 10 - 1 ==> j = 9
- ③ : k = k를 j로 나눈 나머지 → 30%9 ==> k = 3
- ④ : i, j, k를 순서대로 출력 ==> 1, 9, 3
- C_ 2
#include <stdio.h>
main () {
int result, a =100, b = 200, c = 300;
① result = a < b ? b++ : --c;
② printf("%d, %d, %d\n", result, b, c);
}
- ① : a가 b보다 작으면 b++을 수행하고 아니면 --c를 수행
- a 100이 b 200 보다 작으므로 b++을 수행
- b++ 은 후치연산 → result에 b의 값(200)을 저장한 후 b를 1 증가시킨다
- result = 200, b = 201, c = 300
- ② : 200, 201, 300
- C_ 3
#includ <stdio.h>
main () {
int i = 5, j = 4, k = 1, L, m;
① L = i = 5 || j != 0;
② m = j <= 4 && k < 1;
③ printf("%d, %d\n", L, m);
}
- ① : 논리 연산자를 먼저 수행 → j != 0 이 참이므로 1(참) 저장
- L = 1
- ② : j <= 4는 참이나 K < 1이 거짓이므로 0(거짓) 저장
- m = 0
- ③ : 1, 0
- 제어문
- 서술된 순서에 따라 무조건 위에서 아래로 실행되는 프로그램의 순서를 변경할 때 사용하는 명령문
- if, switch, for, while 등...
- C 예제
#include <stdio.h>
main () {
① int score[] = {86, 53, 95, 76, 61};
② char grade;
③ char str[] = "Rank";
④ for (int i = 0, i < 5, i++) {
⑤ switch (score[i] / 10) {
case 10 :
case 9 :
grade = 'A';
break;
⑥ case 8 :
⑦ grade = 'B';
⑧ break;
case 7 :
grade = 'C';
break;
default : grade = 'F';
}
⑨ if (grade != 'F')
printf ("%d is %c %s\n", i + 1, grade, str);
}
}
- ① : score 배열 안에 86, 53, 95, 76, 61을 저장
- ② : 문자형 grade 선언
- ③ : str 배열을 Rank로 초기화
- ④ : i가 5보다 작은동안 switch문 수행
- ⑤ : i가 0 → score[0] = 86
- 86 / 10 = 8 →case8 로 이동
- ⑥ : score[i] / 10 이 8일 경우 찾아오는 곳
- ⑦ : grade에 B를 저장
- ⑧ : switch문을 벗어나 ⑨로 이동
- ⑨ : grade가 F면 반복문의 처음으로 아니면 print문 수행
- score[1], score[4]는 F가 나옴
- 결과
- 1 is B Rank
- 2 is A Rank
- 4 is C Rank
- JAVA 예제
public class Test {
public static void main(Stringp[] args) {
① String str = "agile";
② int x[] = {1, 2, 3, 4, 5};
③ char y[] = new char[5];
④ int i = 0;
⑤ while (i < str.length()) {
⑥ y[i] = str.charAt(i);
⑦ i++;
}
⑧ for (int p : x) {
⑨ i--;
⑩ System.out.print(y[i]);
Sysyem.out.print(p + " ");
}
}
}
- ① : 문자열 변수 str을 선언하고 "agile"로 초기화
- ② : 배열 x를 선언하고, | 1 | 2 | 3 | 4 | 5 | 로 초기화
- ③ : 5칸의 배열 y를 선언
- ④ : 정수형 변수 i를 선언하고 0으로 초기화
- ⑤ : i 가 str의 길이 (5)보다 작은 동안 ⑥ ~ ⑦ 수행
- ⑥ : y[i]에 str의 1번째 문자를 저장 → y는 | a | g | i | l | e |
- ⑦ : i에 1 증가
- ⑧ : 향상된 반복문, x 배열의 각 요소 값을 차례로 받으면서 x 배열의 요소 수 만큼 ⑨ ~ ⑩ 수행
- ⑨ : i에 1 감소
- ⑩ : x 배열의 1번째 값이 p를 거쳐 y[i]의 값과 함께 출력
- 결과 : e1 l2 i3
- 포인터
- 특정 변수의 주소를 가리키는 것
- Java는 포인터를 쓸 수 없음
- C 예제
#include <stdio.h>
main () {
① int a = 50;
② int *b = &a;
③ *b = *b + 20;
④ printf("%d, %d\n", a, *b);
⑤ char *s;
⑥ s = "gilbut";
⑦ for (int i = 0; i < 6; i += 2) {
⑧ printf("%c, ", s[i]);
⑨ printf("%c, ", *(s + i));
⑩ printf("%s\n", s + i);
}
}
- ① : 정소형 변수 a를 선언하고 50으로 초기화
- ② : 포인터변수 b를 선언하고 a의 주소로 초기화 → b에는 a의 주소가 저장
- ③ : b가 가리키는 값에 20을 더함 → a의 값 + 20 = 70
- ④ : a와 *b의 값 출력 → 70, 70
- ⑤ : 포인터변수 s를 선언
- ⑥ : gilbut이라는 문자의 주소를 s에 저장
- ⑦ : i가 0부터 2씩 증가하면서 6보다 작은동안 반복문 수행
- ⑧ : s[i] 즉 s[0]의 값 = g
- ⑨ : *(s+i) 즉 (s+0)의 값 = g
- ⑩ : s[0]에서 부터 문자열 끝까지의 문자 출력 = gilbut
- 결과 : g, g, gilbut
- 구조체
- 자료의 종류가 다른 변수의 모임
- 구조체 정의 : struct
- C 예제
#include <stdio.h>
Ⓐ struct jsu {
char nae[12];
int os, db, hab, hhab;
};
int main() {
① struct jsu st[3] = { {"데이터1", 95, 88 }, {"데이터2", 84, 91 }, {"데이터3", 86, 75} };
② struct jsu* p;
③ p = &st[0];
④ (p+1) -> hab = (p+1) -> os + (p+2) -> db;
⑤ (p+1) -> hhab = (p+1) -> hab + p -> os + p -> db;
⑥ printf("%d", (p+1) -> hab + (p+1) -> hhab);
}
- A : 구조체 jsu는 12글자의 nae와 정수형 os, db, hab, hhab으로 저장
- ① : 구조체 jsu의 자료형
- st[0] : 데이터1, 95, 88
- st[1] : 데이터2, 84, 91
- st[2] : 데이터3, 86, 75
- ② : jsudㅢ 포인터 변수 p를 선언
- ③ : p에 st[0] 요소의 주소를 저장
- ④ : p+1이 가리키는 곳의 hab에 p+1이 가리키는 곳의 os와 p+2가 가리키는 곳의 db를 더함
- p+1의 hab은 84 + 75 = 159
- ⑤ : p+1이 가리키는 곳의 hhab에 p+1이 가리키는 곳의 hab과 p가 가리키는 곳의 os와 p가 가리키는 곳의 db를 더함
- p+1의 hhab은 159 + 95 + 88 = 342
- ⑥ : p+1의 hab과 hhab의 합을 출력 → 342 + 159 = 501
- 결과 : 501
- 사용자 정의 함수
- 사용자가 직접 만들어서 사용하는 함수
- C 예제 (버블정렬)
#include <stdio.h>
void align(int a[]) {
int temp;
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4 - i; j++)
if (a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp
}
}
main() {
int a[] = {85, 75, 50, 100, 95 };
align(a);
for (int i = 0; i < 5; i++)
printf("%d", a[i]);
}
- 버블정렬 함수 → 50 75 85 95 100
- 자바의 클래스
- 객체 생성을 위한 필드와 메소드를 정의하는 설계도
- 생성자
- 객체 변수 생성에 사용되는 메소드로 객체 변수를 생성하면서 초기화를 수행
- JAVA 예제
class A {
int a;
④ public A(int a) {
⑤ this.a = a; }
⑦ void display() {
⑧ System.out.println("a=" + a); }
}
class B extends A {
② public B(int a) {
③ super(a);
⑥ super.display();
}⑨
}
public class Test {
public static void main(String[] args) {
① B obj = new B(10);
}⑩
}
- ① : 클래스 B의 객체변수 obj를 선언하고 생성자에 인수 10을 전달
- ② : B 클래스의 시작, 1에서 전달받은 10을 a 가 받음
- ③ : super() : 부모 클래스를 호출하고 10을 인수로 전달
- ④ : 생성자 A의 시작
- ⑤ : a = 10
- ⑥ : 부모 클래스의 display()를 호출
- ⑦ : A 클래스의 display 시작
- ⑧ : a=10 출력
- 결과 : a=10
- JAVA의 활용
- 추상클래스와 형 변환
- Java 추상클래스 예제
abstract class Animal {
String a = " is animal";
abstract void look();
⑧ void show() {
⑨ System.out.println("Zoo");
}
}
class Chicken extends Animal {
② chicken() {
③ look();
⑥ }
④ void look() {
⑤ System.out.println("Chicken" + a);
}
void display() {
System.out.println("two wings");
}
}
public class Test {
public static void main(String[] args) {
① Animal a = new Chicken();
⑦ a.show();
}
}
- ① : Chicken 클래스의 생성자를 이용하여 Animal 클래스의 객체 변수 a를 선언
- ② : Chicken 클래스의 생성자인 Chicken() 메소드의 시작
- ③ : Chicken 클래스의 look() 메소드 호출
- ④ : look() 메소드
- ⑤ : Chicken과 a의 값 is animal 을 출력 → Chicken is animal
- ⑥ : Chicken() 메소드 종료
- ⑦ : a.show() 메소드 호출, Animal의 show 메소드 호출
- ⑧ : animal 클래스의 show() 메소드
- ⑨ : Zoo 출력
- 결과
- Chicken is animal
- Zoo
'정보처리기사_실기' 카테고리의 다른 글
정보처리기사 163 ~ 175 (운영체제 개념 ~ 인터넷) (0) | 2022.07.03 |
---|---|
정보처리기사 156 ~ 162 (Python 활용 ~ 예외 처리) (0) | 2022.07.02 |
정보처리기사 133 ~ 148 (Secure SDLC ~ 취약점 분석.평가) (0) | 2022.06.29 |
정보처리기사 118 ~ 123 (DDL ~ DML) (0) | 2022.06.27 |
정보처리기사 106 ~ 117 (애플리케이션 테스트 ~ 성능 개선) (0) | 2022.06.26 |