Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch4
- @Aspect
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch14
- jpa 활용2 - api 개발 고급
- 스프링 mvc2 - 로그인 처리
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch5
- 2024 정보처리기사 수제비 실기
- 스프링 고급 - 스프링 aop
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch1
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc1 - 서블릿
- 스프링 mvc1 - 스프링 mvc
- 스프링 입문(무료)
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch9
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch12
- 게시글 목록 api
- 스프링 db2 - 데이터 접근 기술
- 타임리프 - 기본기능
Archives
- Today
- Total
나구리의 개발공부기록
2장 - 프로그래밍 언어 활용 | 섹션7. 데이터 입/출력, 섹션8. 제어문, 섹션9. 반복문 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 4강 - 프로그래밍 언어 활용
2장 - 프로그래밍 언어 활용 | 섹션7. 데이터 입/출력, 섹션8. 제어문, 섹션9. 반복문
소소한나구리 2024. 5. 9. 20:092024년도 시나공 필기 책 내용 정리
섹션7. 데이터 입/출력
1. C언어의 표준 입/출력 함수의 개요
- 키보드로 입력받아 화면으로 출력할 때 사용하는 함수
- 대표적으로 scanf(), getchar(), gets(), printf(), putchar(), puts() 등이 있음
2. scanf() 함수
- C언어의 표준 입력함수로 키보드로 입력받아 변수에 저장하는 함수
// 형식
scanf(서식 문자열, 변수의 주소)
scanf("%3d", &a);
// % : 서식 문자입을 지정
// 3 : 입력 자릿수를 3자리로 지정
// d : 10진수로 입력
// &a : 입력받은 데이터를 변수 a의 주소에 저장
- 서식 문자열 : 입력받을 데이터의 자료형을 지정
- 변수의 주소 : 데이터를 입력받을 변수를 작성, 변수의 주소로 입력 받아야하기 때문에 변수에 주소연산자 &을 붙힘
- 특징
- 입력받을 데이터의 자료형, 자릿수 등을 지정할 수 있음
- 한 번에 여러 개의 데이터를 입력 받을 수 있음
- 서식 문자열과 변수의 자료형은 일치 해야 함
scanf("%d %f", &i, &j); // %d와 i, %f와 j는 자료형이 일치해야함
- 서식 문자열 : printf() 함수로 출력할 때도 동일하게 적용 됨
서식 문자열 | 의미 |
%d | 정수형 10진수를 입/출력하기 위해 지정 |
%u | 부호없는 정수형 10진수를 입/출력하기 위해 지정 |
%o | 정수형 8진수를 입/출력하기 위해 지정 |
%x | 정수형 16진수를 입/출력하기위해 지정 |
%c | 문자를 입/출력하기 위해 지정 |
%s | 문자열을 입/출력하기위해 지정 |
%f | 소수점을 포함하는 실수를 입/출력하기위해 지정 |
%e | 지수형 실수를 입/출력하기 위해 지정 |
%ld | long타입 10진수를 입/출력하기 위해 지정 |
%lx | long타입 16진수를 입/출력하기 위해 지정 |
%lo | long타입 8진수를 입/출력하기 위해 지정 |
%p | 주소를 16진수로 입/출력하기 위해 지 |
JAVA에서의 표준 입력
- JAVA 에서 키보드로 입력받은 값을 변수에 저장하려면 먼저 Scanner 클래스를 이용해 키보드로부터 값을 입력 받는 객체 변수를 생성한 후 이를 사용해야 함
Scanner scan01 = new Scanner(System.in);
inNum = scan01.nextInt();
// 객체 변수 생성
// Scanner : 입력에 사용할 객체 변수를 생성할 때 사용하는 클래스 이름
// scan01 : 객체 변수명, 사용자 임의대로 작성
// new : 객체 생성 예약어
// Scanner() : 클래스의 이름, ()를 붙여 그대로 작성
// System.in : 표준 입력장치(키보드)를 의미함,
// 객체 변수 활용
// inNUM : 입력받은 값을 저장할 변수, 해당 변수는 미리 선언 되어 있어야 함
// scan01 : 입력에 사용할 객체 변수 이름, 객체 변수 생성 시 사용한 객체 변수 이름과 동일 해야 함
// nextINt() : 입력받은 값을 정수형으로 반환
3. printf()함수
- C언어의 표준 출력함수, 인수로 주어진 값을 화면에 출력하는 함수
// 형식
printf(서식 문자열, 변수)
// 서식 문자열 : 변수의 자료형에 맞는 서식 문자열을 입력
// 변수 : 서식 문자열의 순서에 맞게 출력할 변수를 작성, scanf() 달리 주소 연산자 &을 붙히지 않음
print("%-8.2f", 200.2);
// % : 서식 문자임을 지정
// - : 왼쪽부터 출력
// 8 : 출력 자릿수를 8자리로 지정
// 2 : 소수점 이하를 2자리로 지정
// f : 실수로 출력
- 주요 제어 문자 : 입력 혹은 출력 내용을 제어하는 문자
문자 | 의미 | 기능 |
\n | new line | 커서를 다음 줄 앞으로 이동 |
\b | backspace | 커서를 왼쪽으로 한 칸 이동 |
\t | tab | 커서를 일정 간격 띄움 |
\r | carriage return | 커서를 현재 줄의 처음으로 이동 |
\0 | null | 널 문자를 출력 |
\' | single quote | 작은따옴표를 출력 |
\" | double quote | 큰따옴표를 출력 |
\a | alert | 스피커로 벨 소리를 출력 |
\\ | backslash | 역슬래시를 출력 |
\f | form feed | 한 페이지를 넘김 |
printf("%d\n", a); // a의 값을 정수형 10진수로 출력 후 다음줄로 이동
JAVA에서의 표준 출력
- JAVA에서 값을 화면에 출력할 때는 System 클래스의 서브 클래스인 out 클래스의 메소드 pinrt(), println(), printf()등을 사용하여 출력함
// 형식1 : 서식 문자열에 맞게 변수의 내용을 출력
System.out.printf(서식 문자열, 변수) // C언어의 printf() 함수와 사용법이 동일
// 형식2 : 값이나 변수의 내용을 형식 없이 출력
System.out.print()
System.out.print("abc123" + "def") // abc123def
System.out.print("abc" + 12 + 34) // abc1234
System.out.print("abc" + (12 + 34)) // abc46
// 문자열을 출력할 때는 큰따옴표로 묶어줘야 함
// 문자열 또는 문자열 변수를 연속으로 출력할 때는 + 를 이용
// '숫자 + 숫자'는 두 숫자를 합한 값을 출력하지만 '문자열 + 숫자 or 숫자 + 문자열' 과같은 경우 모두문자열로 인식됨
// 형식3 : 값이나 변수의 내용을 형식없이 출력한 후 커서를 다음 줄의 처음으로 이동
System.out.println()
// print()메소드와 사용법이 동일하며, 출력 후 다음 줄로 건너뜀(\n)
4. 기타 표준 입/출력 함수
입력 | getchar() | 키보드로 한 문자를 입력받아 변수에 저장하는 함수 |
gets() | 키보드로 문자열을 입력받아 변수에 저장하는 함수 Enter를 누르기 전까지를 하나의 문자열로 저장 |
|
출력 | putchar() | 인수로 주어진 한 문자를 화면에 출력하는 함수 |
puts() | 인수로 주어진 문자열을 화면에 출력한 후 커서를 자동으로 다음 줄 앞으로 이동하는 함수 |
섹션8. 제어문
1. 제어문의 개념
- 컴퓨터 프로그램은 명령어가 서술된 순서에 따라 무조건 위에서 아래로 실행되는데, 조건을 지정해서 진행 순서를 변경할 수 있음 -> 프로그램 순서를 변경할 때 사용하는 명령문을 제어문이라고 함
- if문, 다중if문, switch문, goto, 반복문 등이 있음
2. 단순 if문
- 조건에 따라서 실행할 문장을 달리하는 제어문, 단순 if문은 조건이 한개 일때 사용하는 제어문
- 조건이 참일 때만 실행할 문장을 지정할 수도 있고, 참과 거짓에 대해 각각 다른 실행문을 지정할 수도 있음
- 형식1 - 조건이 참일 때만 실행함
if (조건) // if는 조건 판단문에 사용되는 예약어
// 조건은 참(1) 또는 거짓(0)이 결과로 나올 수 있는 수식을 () 안에 입력
실행할 문장; // 조건이 참일 때 실행할 문장을 작성
// 조건이 참일 때 실행할 문장이 두 문장 이상인 경우
if (조건)
{ // { } 사이에 조건이 참일 경우 실행할 문장을 작성
실행할 문장1;
실행할 문장2;
...
}
// 예제 - a가 10보다 크면 a에서 10을 빼기
#include <stdio.h>
main()
{
int a = 15, b;
if (a > 10)
b = a - 10;
printf("%d\n", b);
}
- 형식2 - 조건이 참일 때와 거짓일 때 실행할 문장이 다름
if (조건)
실행할 문장1; // 실행할 문장이 두 문장 이상이면 { } 를 입력하고 그 사이에 문장을 작성
else // else문 : 조건이 거짓일 경우 실행할 문장을 작성
실행할 문장2;
// 예제 - a가 b보다 크면 'a - b', 아니면 'b - a'를 수행
#include <stdio.h>
main()
{
int a = 10, b = 20, cha;
if (a > b)
cha = a - b;
else
cha = b - a;
printf("%d\n", cha);
}
3. 다중 if문 : 조건이 여러개
- 형식1
if (조건1) // 조건1이 참일 경우 실행할 문장 작성
실행할 문장1;
else if (조건2) // 조건2가 참일 경우 실행할 문장 작성
실행할 문장2;
else if (조건3) // 조건3이 참일 경우 실행할 문장 작성
실행할 문장3;
...
else // 앞의 조건이 모두 거짓일 경우 실행할 문장을 작성
실행할 문장4;
// 예제 - 점수에 따라 등급 표시하기
#include <stdio.h>
main()
{
int jum = 85;
if (jum >= 90)
printf("학점은 A입니다.\n");
else if (jum >= 80)
printf("학점은 B입니다.\n");
else if (jum >= 70)
printf("학점은 C입니다.\n");
else
printf("학점은 F입니다.\n");
}
// 결과 : 학점은 B입니다
- 형식2 : if문 안에 if문이 포함
if (조건1)
{ // 조건1이 참일 경우 실행할 문장의 시작점
if (조건2) // 조건1이 참이고 조건2가 참일 경우 실행할 문장을 작성
실행할 문장1;
else // 조건1이 참이고 조건2가 거짓일 경우 실행할 문작을 작성
실행할 문장2;
}
else // 조건1이 거짓일 경우 실행할 문장을 작성
실행할 문장3;
// 예제 - 홀수,짝수 판별기
#include <stdio.h>
main()
{
int a = 21, b = 10;
if (a % 2 == 0) // a를 2로 나눈 나머지가 0이면(짝수) if문을 실행, 아니면(홀수) else문 실행
if (b % 2 == 0) // b를 2로 나눈 나머지가 0이면 if문 실행
printf("모두 짝수\n");
else // if문의 조건이 아니면 else문 실행
printf("a: 짝수, b: 홀수\n");
else // a % 2 != 0 이면(홀수)면 else문
if (b % 2 == 0) // 위와 동일 로직 실행
printf("a: 홀수, b: 짝수\n")
else
printf("모두 홀수\n");
}
4. switch문
- 조건에 따라 분기할 곳이 여러 곳인 경우 간단하게 처리할 수 있는 제어문
- case문의 레이블에는 한 개의 상수만 지정할 수 있고 int, char, enum형의 상수만 가능함
- case문의 레이블에는 변수를 지정할 수 없음
- break문은 생략이 가능하지만 break 문이 생략되면 수식과 레이블이 일치할 때 실행할 문장부터 break문 또는 switch문이 종료될 때까지 모든 문장이 실행됨
switch (수식) // 수식 : 레이블1 ~ 레이블n의 값중 하나를 도출하는 변수나 수식을 입력
{
case 레이블1: // 수식의 결과가 될 만한 값중 하나를 입력, 수식의 결과가 일치하면 문장을 실행
실행할 문장1;
break; // switch문을 탈출하여 종료
case 레이블2:
실행할 문장2;
break;
...
default: // if문의 else문과 같은역할, 위의 레이블1 ~ 레이블n까지 해당되지 않는 경우 실행됨
실행할 문장3; // 마지막에 실행되기 때문에 break문이 필요없음
}
#예제 - 점수(jum)에 따라 등급 표시하기
#include <stdio.h>
main()
{
int jum = 85;
switch (jum / 10)
{
case 10: // 100점일 경우 찾아오는 곳이지만 case9와 같은 문장을 실행하기 위해
// 실행할 문장을 입력하지 않으면 다음 케이스로 넘어감
case 9:
printf("학점은 A입니다.\n");
break;
case 8:
printf("학점은 B입니다.\n");
break;
case 7:
printf("학점은 C입니다.\n");
break;
case 6:
printf("학점은 D입니다.\n");
break;
default:
printf("학점은 F입니다.\n");
}
}
5. goto문
- 프로그램 실행 중 현재 위치에서 원하는 다른 문장으로 건너뛰어 수행을 계속하기 위해 사용하는 제어문
- 원하는 문장으로 쉽게 이동할 수 있지만 사용하면 프로그램의 이해와 유지 보수가 어려워져 거의 사용하지 않음
goto 레이블:
레이블: // goto문의 주소값. 레이블 형태로 작성되며, 레이블명은 사용자가 원하는 이름을 임의로 지정
실행할 문장
// 예제 - 10보다 큰 값을 입력할 때까지 입력하기
#include <stdio.h>
main()
{
int a;
again: // goto문의 주소값
scanf("%d", &a); // 정수형 변수 a에 10진수를 입력 받음
if (a <= 10)
goto again; // a가 10보다 작거나 같으면 again레이블로 돌아감
else
printf("%d는 10보다 큽니다.", a); // a의 값이 10을 넘어가면 a의 값을 출력
}
섹션9. 반복문
1. 반복문의 개요
- 제어문의 한 종류로 일정한 횟수를 반복하는 명령문, 보통 변수의 값을 일정하게 증가시키면서 정해진 수가 될 때까지 명령이나 명령 그룹을 반복 수행
- for, while, do ~ while 문이 있음
2. for문
- 초기값, 최종값, 증가값을 지정하는 수식을 이용해 정해진 횟수를 반복하는 제어문
- 초기값을 정한 다음 최종값에 대한 조건이 참이면 실행할 문장을 실행한 후 초기값을 증가값 만큼 증가시키면서 최종값에 대한 조건이 참인 동안 실행할 문장을 반복 수행함
for(식1; 식2; 식3) // 식1 : 초기값을 지정할 수식 입력, 식2 : 최종값을 지정할 수식 입력
// 식3 : 증가값으로 사용할 수식 입력
실행할 문장; // 식2가 참일 동한 실행할 문장을 입력, 2문장 이상일 경우 { } 사이에 입력
// 초기값, 최종값, 증가값 중 하나 이상을 생략할 수 있고 각각의 요소에 여러 개의 수식을 지정할 수도 있음
for (a = 1; sum <= 30;) sum += a; // 증가값을 생략, 실행할 문장에서 증가값을 만듦
for (a = 0; sum <= 10; a++, sum += a) // 증가값을 a+=, sum += a 2개를 지정
for (a = 0, b = 5; a <= 5, b >= 0; a++, b--) // 초기값, 최종값, 증가값을 모두 두 개씩 지정
for ( ; ; ) // 모두생략하면 무한방복문이 됨
- for( ; ; )와 같이 조건에 참여하는 수식을 모두 생략하면 for문은 무한 반복함
- for문은 처음부터 최종값에 대한 조건식을 만족하지 못하면 한 번도 수행하지 않음
- 문자도 for문을 수행할 수 있음
- ex) for(char a = 'A'; a <= 'Z'; a++) // a에 'A'. 'B' ... 'Z' 순으로 저장함
- a에 실제로 해당 문자를 저장하는 것이 아닌 아스키 코드를 저장함, 'A' = 65, 'B' = 66 ... 'Z' = 90
// for문을 이용하여 1 ~ 5까지 합을 더하는 다양한 방법
int a, hap = 0;
for (a = 1; a <= 5; a++)
hap += a;
int a, hap = 0;
for (a = 0; a < 5; a++, hap += a); // for문의 마지막에 ;이 있으므로 실행할 문장 없이 for문만 반복
int a = 1, hap = 0;
for (; a <= 5; a++) // 변수 선언시 a를 1로 초기화 했기 때문에 for문의 초기값은 생략 가능함
hap += a;
int a, hap = 0;
for(a = 0; a++ < 5;) // 증가값을 지정하지 않아도 최종값에서 a++;를 수행하기 때문에 반복문이 수행됨
hap += a;
int a = 1, hap = 0; // 엄청나게 비효율적인 for문, 아무도 이따위로 짜지 않을 듯
for (; a <= 5;)
{
hap += a;
a++;
}
}
3. while문
- 조건이 참인 동안 실행할 문장을 반복 수행하는 제어문
- 조건이 참인동안 실행할 문장을 반복 수행하다가 조건이 거짓이면 while문을 끝낸 후 다음 코드를 실행
- 조건이 처음부터 거짓(0)이면 한번도 수행하지 않음
while (조건) // 조건에 참이나 거짓을 결과로 갖는 수식을 입력, 참(1)을 직접 입력해도 됨
실행할 문장 ; // 마찬가지로 2개 이상일 경우 { } 사이에 입력해야함
// 예제 - 1 ~ 5까지의 합을 더하는 프로그램
#include <stdio.h>
main()
{
int a = 0, hap = 0;
while (a < 5)
{
a++;
hap += a;
}
printf("%d, %d\n", a, hap);
}
// 결과 5, 15
4. do ~ while 문
- while문과 같은 동작을 수행하지만 do ~ while문은 문장을 무조건 한번 실행한 다음 조건을 판단하여 탈출 여부를 결정함
- 실행할 문장을 우선 실행한 후 조건을 판별하여 조건이 참이면 실행할 문장을 반복 수행하고, 거짓이면 do ~ while문을 끝내고 다음 코드를 실행
do
실행할 문장;
while (조건);
// 예제 - 1 ~ 10까지의 홀수의 합을 더하는 프로그램
#include <stdio.h>
main()
{
int a = 1, hap = 0;
do
{ // 반복 범위
hap += a; // 우선 문장을 1번 수행시키고 while문의 조건이 true인경우 계속 문장을 실행
a += 2;
} while (a < 10)
printf("%d, %d\n", a, hap)
}
5. break, continue;
- switch문이나 반복문의 실행을 제어하기 위해 사용되는 예약어
- break : switch문이나 반복문 안에서 break가 나오면 블록을 벗어남
- continue : continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮김, 반복문에서만 사용됨
// 예제 - 1 ~ 5까지의 합을 더하되 2의 배수는 배제하는 프로그램
#include <stdio.h>
main()
{
int a = 0, hap = 0;
while(1) // while의 조건식이 참(1)이므로 무한 반복함
{
a++;
if (a > 5) // 만약 a가 5보다 크면 반복문을 멈춤
break;
if (a % 2 == 0) // 만약 a가 2의 배수이면 continue로 반복문의 처음으로 돌아감
continue;
hap += a; // while문이 실행되는 동안에는 a의 값을 hap에 누적하여 더하는 연산을 수행
}
printf("%d, %d\n", a, hap);
}
// 결과 6, 9
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 필기 4강 - 프로그래밍 언어 활용' 카테고리의 다른 글
2장 - 프로그래밍 언어 활용 | 섹션15. 스크립트 언어, 섹션16. 라이브러리, 섹션17. 예외 처리 (0) | 2024.05.10 |
---|---|
2장 - 프로그래밍 언어 활용 | 섹션13. Python의 기초, 섹션14. Python의 활용 (0) | 2024.05.10 |
2장 - 프로그래밍 언어 활용 | 섹션10. 배열과 문자열, 섹션11. 포인터, 섹션12. 구조체 (0) | 2024.05.10 |
2장 - 프로그래밍 언어 활용 | 섹션4. 데이터 타입, 섹션5. 변수, 섹션6. 연산자 (0) | 2024.05.09 |
1장 - 서버 프로그램 구현 핵심 요약 (0) | 2024.05.09 |