저번 화를 본 게잉게잉 게이들은 죄다 관음증인가봄
시벌 뭐이리 지켜본다는 새기가 많아!
오늘 배울건 책이던 강의던 어디선 필수로 나오는 몇몇 조건문을 배우겠다.
2. 조건문
조건문이란, 어떠한 조건에 일치하는가 아닌가로 두개의 분기를 나누어서 조건이 참일 때와 거짓일 때에 서로 실행하게 되는 명령을 다르게 할 때 사용한다.
예를 들어보자. 만약 내가 게이중의 게이! 씹 후로게이라서 여성을 혐오한다면. 사용자에게 여성인지 남성인지 묻고, 그 값에 따라 받게 되는 문구를 달리 하고싶다고 가정하자.
프로그램 : 님 하이염! 실례지만 남자세여 여자세여? (남자,여자 선택의 분기)
A. (여자를 선택.)
사용자 : ㅎㅎ 여자인데여.
프로그램 : 아니 이런 씹 김치년이 어딜 보고 실실 쪼개? 와 어이털리는거 보소. 존나 매미없이 김치냄새 풀풀 풍기는거 보니 보통 김치가 아니로구나! 이 썅년아!
B. (남자를 선택.)
사용자 : Boy.
프로그램 : Boooooooooooooooooy♂
이런 경우에 사용되는 것이 바로 조건문. 이해했냐?
오늘 배울 조건문은 if, if else, switch 이 세가지가 될거다.
2.1 if문
if문의 if에 대해서는 초딩새끼라도 무슨 뜻인지 알거라 믿는다!
근데 니네는 모르니까 설명해줌.
if는 만약에. 라는 뜻을 가지고 있어. 그렇기에 c언어에서의 if문도 뜻 그대로를 나타내.
만약에 a가 2라면.
if(a==2)
이렇게 나타내면 되는 아주 쉬운 조건문이야.
존나 쉬우니 바로 예시로 들어간다.
이번엔 a라는 정수형 변수를 선언하고, 사용자에게서 그 값을 받도록 하자.
만약 사용자가 입력한 값이 5의 배수라면 특정한 문구가 추가로 출력되게 하는걸로.
일단 정수형 변수 a를 선언해 줘야겠지?
int a;
그리고 사용자에게 정수값을 입력받아야 겠지.
printf("자. 이번에는 정수만 받도록 해봄. 값을 내놔라!");
scanf("%d",&a);
사용자가 입력한 값이 5의 배수일 것이 조건이잖아? 그럼 간단해. 5로 계속 쪼개보면 되는거지.
혹시 아직 기억하나 모르겠는데, 니네가 이전 조루년들한태 강의를 배웠다면 % 라는 연산자를 기억할거야.
*%연산자는 변수를 정해진 값으로 더이상 주어진 정수로 나누어 질 수 없을 때 까지 무한히 나누고, 남은 나머지 값을 계산하여 주는 연산자야.*
Ex ) 10%10은 나머지 값이 없어. 고로 0.
Ex2)10%3 = 나누고 남은 값은 1이 되므로 1.
그렇기에 사용자가 입력한 정수형 변수 a를 5로 계속 나누고, 만약 입력받은 수가 5의 배수라면 나머지 값은 0이 될 수 밖에 없겠지?
if (a%5==0)
조건을 만족할 때 출력할 문구 또한 넣어주자.
{
printf("이양! 5의 배수를 주었쿠나!");
}
조건이 만족하지 않았거나, if문을 한번 거쳐 빠져나온 경우에 출력될 문구도 넣어주장.
printf("\n끝남");
printf("\n이제 꺼졍");
알다시피 컴파일러 이새끼는 디버깅이 끝나면 자동으로 종료되는 아주 씹새끼니까 종료되지 않도록 입력함수를 하나 더 넣어주고.
scanf("%d",&a); 혹은 getchar();을 두개 넣어준다. (이번에 갑자기 두개를 넣은 이유는 getchar문의 특성때문인데 설명하기 죧같으니 패스.)
이렇게 완성된 코딩은 이래.
#include <stdio.h>
void main()
{
int a;
printf("자. 이번에는 정수만 받도록 해봄. 값을 내놔라!\n");
scanf("%d",&a);
if (a%5==0)
{
printf("이양! 5의 배수를 주었쿠나!");
}
printf("\n끝남");
printf("\n이제 꺼졍");
getchar();
getchar();
}
결과-
1. 5의 배수일 때.
자. 이번에는 정수만 받도록 해봄. 값을 내놔라!
(5의 배수)
이양! 5의 배수를 주었쿠나!"
끝남
이제 꺼졍
2. 5의 배수가 아닐때.
자. 이번에는 정수만 받도록 해봄. 값을 내놔라!
(다른 수)
끝남
이제 꺼졍
보이는대로 조건을 만족할 때만 보일 수 있게 할 수 있고,
조건연산자를 더 사용해서 만족했을때, 만족하지 아니하였을 때, 아예 숫자가 아니거나 소수를 입력했을 때 등도 설정할 수 있지만 귀찮으므로 넘기자.
2.2if~else문
if~else문의 특징은, '조건을 만족했을 때.' '조건을 만족하지 않았을 때.' 최소 두가지 분기에 대해 작성할 수 있다는 거야.
조건을 만족했을 때 = if 괄호 안의 내용을 실행
조건을 만족못할 때 = else 괄호 안의 내용을 실행
꼴을 보자면 이런거지.
if(조건)
{ 만족 했을 때 실행되는 명령 }
else
{ 불만족 할 때 실행되는 명령 }
이번에는 if문에 사용했던 소스는 그대로 사용하도록 하고 else문만 살포시 끼얹어주자!
아래와 같이 수정해 주면 돼!
#include <stdio.h>
void main()
{
int a;
printf("자. 이번에는 정수만 받도록 해봄. 값을 내놔라!\n");
scanf("%d",&a);
if (a%5==0)
{
printf("이양! 5의 배수를 주었쿠나!");
}
else {
printf("\n이새끼 이거.. 반동분자였구만?");
}
printf("\n이제 꺼졍");
getchar();
getchar();
}
위와 같이 실행한다면 결과는 이래.
1. 5의 배수일 때
자. 이번에는 정수만 받도록 해봄. 값을 내놔라!
(5의 배수)
이양! 5의 배수를 주었쿠나!"
이제 꺼졍
2. 5의 배수가 아닐 때
자. 이번에는 정수만 받도록 해봄. 값을 내놔라!
(5의 배수)
이새끼 이거.. 반동분자였구만?
이제 꺼졍
우왕. 분명 글 작성은 1시에 시작했는데 글쓰다가 중간에 무한도전 한개랑 캐치 미 이프 유 캔을 봤더니 4시가 됬네!
존내 빨리 싸지르고 꺼져야겠다!
2.3 Switch문
switch문은 if else문보다 더 많은 분기를 만들 수 있다고 생각하면 돼.
일단 꼴부터 보자면 이렇게 생겼어.
switch(변수)
{
case 변수의 값 : 실행할 명령
break;
case 변수의 값2 :
break;
.
.
.
(원하는 수 만큼 case 생성)
설명해 줄게.
위 조건식들과는 다르게 switch문은 '조건을 검사받을 변수를 지정' 하는 역활을 해.
즉, a라는 변수의 값을 조건문의 대상으로 하고 싶다! 고 하면 switch(a) 라고 적으면 되는거지.
그렇게 하면 switch는 변수를 case들에게 보내게 되지.
그럼 case들은 순서대로 한번씩 변수를 열여봐. 그리고 자신에게 주어진 조건값과 다르면 걍 뒤에 있는 case에게 넘겨버려.
예시 대화를 줄게.
switch : 님드랑! a 이새끼 드릴테니 확인점!
case 1: 내꺼아님;
case 2: 내꺼아님;
case 3: 내꺼아님;
case 4: 내꺼아님;
case 5: 내꺼아님;
case 6: 히익! 내꺼네!
break : ? 여기꺼였음? 그럼 탈출!
case 7: ? 뭔 일 있었음??
그리고 일치하는 case의 번호만 자신의 명령을 실행하고 끝이 나게 돼.
위의 예시 대화를 다시 읽어봐.
1~6까지는 a의 값을 다 확인해 볼 수 있었지?
그런데, 7은 변수값을 확인해 보지 못했어. 그 이유는 바로 break 문 때문이야.
break는 영단어로 깨트리다. 라는 뜻을 가지고 있어.
그렇기에 자신이 속한 case와 일치하다는 게 확인이 되면 그대로 switch문을 부수고 끝내는거야.
아주 씹깡패새끼지!
하지만 switch문 내에서 break문은 강제가 아니라 선택이야. 그렇기에 얼마든지 빼고 넣고를 할수 있어.
한번 예시를 줄게.
이번에는 예시와 정답을 좀 거리를 벌려 작성해 줄 테니까 예시만 보고 직접 작성해보는 연습을 하렴 바퀴벌레똥새끼들앟!
1. a라는 정수형 변수를 선언한다.
2. 정수형 변수 a의 값을 1로 초기화 한다.
3. switch문에서 조건이 될 변수는 a.
4. case를 6까지 만든다.
5. 각 case마다 가장 먼저 a의 값을 1 증가시키고, a의 값이 몇인지 출력할 수 있게 한다.
6. 단, break문은 4,5,6 case에만 사용하도록 한다.
7. 마지막으로, 결과를 출력하고 종료되지 않을 수 있도록 입력함수를 사용한다.
자. 답은 이래.
1. a라는 정수형 변수를 선언한다.
int a;
2. 정수형 변수 a의 값을 1로 초기화 한다.
a=1;
3. switch문에서 조건이 될 변수는 a.
switch (a)
4. case를 6까지 만든다.
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
5. 각 case마다 가장 먼저 a의 값을 1 증가시키고, a의 값이 몇인지 출력할 수 있게 한다.
case 1: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 2: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 3: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 4: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 5: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 6: a++;printf("a의 값은 현재 %d 이오!\n",a);
6. 단, break문은 4,5,6 case에만 사용하도록 한다.
case 1: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 2: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 3: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 4: a++;printf("a의 값은 현재 %d 이오!\n",a);
break;
case 5: a++;printf("a의 값은 현재 %d 이오!\n",a);
break;
case 6: a++;printf("a의 값은 현재 %d 이오!\n",a);
break;
7. 마지막으로, 결과를 출력하고 종료되지 않을 수 있도록 입력함수를 사용한다.
getchar();
완성된 코딩은 이런 모양이겠지?
#include <stdio.h>
void main()
{
int a;
a=1;
switch (a)
{
case 1: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 2: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 3: a++;printf("a의 값은 현재 %d 이오!\n",a);
case 4: a++;printf("a의 값은 현재 %d 이오!\n",a);
break;
case 5: a++;printf("a의 값은 현재 %d 이오!\n",a);
break;
case 6: a++;printf("a의 값은 현재 %d 이오!\n",a);
break;
}
getchar();
}
위와 같은 코딩을 실행한 결과값은 이래.
a의 값은 현재 2 이오!
a의 값은 현재 3 이오!
a의 값은 현재 4 이오!
a의 값은 현재 5 이오!
확인해 보면 첫 break가 사용된 case4까지는 계속 실행되었음이 확인되었고,
그와 동시에 case문은 순서대로 조건을 확인한다는 걸 알게 되었어.
참고로, break문은 switch문 뿐만이 아니라 많은 곳에서도 사용이 돼.
하지만 너무 과도한 사용을 하면 코딩능력이 떨어지고, goto문 처럼 break문에만 의존하게 되므로 잦은 사용은 하지 말았으면 하지만
니네가 그렇게 까지 열심히 할리가 없지. 걍 막 쓰렴 ^오^
게이들아. 이제 시벌 걍 읽기만 하지 말고
니네도 코딩연습을 좀 하도록 하렴! 알겠징?
이제 끝났으니 꺼져.
StudyOfIT
년째 밀덕
StudyOfIT
이 개호로씨팔새끼야!
년째 밀덕
쇼온
StudyOfIT
쇼온
제비표페인트
빈유사랑나라사랑
보고듣고적고
번째 빌드
'switch 에서 case 문 비교는 맞는 값을 찾을 때까지만 계속되며, 한번 값을 찾으면 그 이후로는 순차적으로 실행한다' 는 말을 해줘야 할거 아냐.
번째 빌드
StudyOfIT
어차피 니네 수준을 고려한 수업이기 때문에 그런건 상관없을거다.
까놓고 말해서 시팔 내 글 읽고 따라 공부할 새끼가 몇명이나 되겠냐 아구찜의 콩나물마냥 없어서는 안될 담백한새끼야
NaG
NaG
필요한것만 딱딱 정리잘되있다
NaG
중간에 끊지말고 계속써줘 ^ㅡ^ 항상 지켜볼게유
아가리싸물어줬으면좋겠다
잉텔
준가르
남은거라곤 해봤자
이제 구조체하고 포인터뿐이냐?
아니면 함수도 포인터 전으로 생각할꺼냐?
파일입출력은 포인터로 넣어서 할꺼냐?
도대체 포인터까지 어디까지 한다는겨~
StudyOfIT
일단 휴일이니 존내놀아야지
준가르
일해!! 공부해!! 남주는거 아녀!!
난 월화수목금토일 다 일한다고!!!
번째 빌드
원천성일
원천성일
개소주는소주소주해
StudyOfIT