과학

조루년들아 몇개만 찍싸고 도망가냐 -2- (프로그래밍, C언어)

저번 화를 본 게잉게잉 게이들은 죄다 관음증인가봄

 

시벌 뭐이리 지켜본다는 새기가 많아!

 

오늘 배울건 책이던 강의던 어디선 필수로 나오는 몇몇 조건문을 배우겠다.

 

 

 

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문에만 의존하게 되므로 잦은 사용은 하지 말았으면 하지만

니네가 그렇게 까지 열심히 할리가 없지. 걍 막 쓰렴 ^오^

 

게이들아. 이제 시벌 걍 읽기만 하지 말고

니네도 코딩연습을 좀 하도록 하렴! 알겠징?

이제 끝났으니 꺼져.

 

 

26개의 댓글

2013.12.20
주말은 휴일이니까 쉰다 씨ㅃ새끼뜰아
0
2013.12.20
@StudyOfIT
개 빠가샠히야 존나게 고맙다 샹노무샠히. 너땜에 내가 지식 고맙게 얻고 간다 컴공돌 노예시키.
0
2013.12.20
@년째 밀덕
나 컴공돌아닌뎅>.<
이 개호로씨팔새끼야!
0
2013.12.20
@StudyOfIT
개씨팔딸딸이샠히가 컴공돌아니면서 존나게 좋은 정보 뿌리네 씨발새꺄 만수무강해라 썅 존나 복받을꺼다 씹호로딸련아!!
0
2013.12.20
대부분 if문까지만쓰고 도망갔다 지켜볼테니까 다음주 월요일에 와라 이제쉬러꺼져
0
2013.12.20
@쇼온
씹새끼 ㅗ
0
2013.12.20
@StudyOfIT
까칠한 맛이있네 짜식
0
2013.12.20
객체도 알려줘
0
고생한거 생각해서 춫 드림
0
2013.12.20
시발 뭣도 모르지만 웃겨서 ㅊㅊ
0
2013.12.20
야 이자식아 switch에 break가 없을때를 보여주는 예제에서 a 값을 같이 증가시키니까 case 비교를 계속 하는거라고 착각할 수도 있잖아.
'switch 에서 case 문 비교는 맞는 값을 찾을 때까지만 계속되며, 한번 값을 찾으면 그 이후로는 순차적으로 실행한다' 는 말을 해줘야 할거 아냐.
0
2013.12.20
@번째 빌드
아 맞다 ㅊㅊ
0
2013.12.20
@번째 빌드
자일리톨 후레시마냥 상쾌한 씨봉새끼야.
어차피 니네 수준을 고려한 수업이기 때문에 그런건 상관없을거다.
까놓고 말해서 시팔 내 글 읽고 따라 공부할 새끼가 몇명이나 되겠냐 아구찜의 콩나물마냥 없어서는 안될 담백한새끼야
0
NaG
2013.12.20
@StudyOfIT
이미 자바를 배우는중인지라 도움많이댐 그리고 난 담백해 > ㅜ <
0
NaG
2013.12.20
@StudyOfIT
너가 올린 첫번째꺼 보고왔는데 설명 잘하네ㄷㄷ
필요한것만 딱딱 정리잘되있다
0
NaG
2013.12.20
잘썼네 추천줌
중간에 끊지말고 계속써줘 ^ㅡ^ 항상 지켜볼게유
0
Switch문에 Default는 집어드셨냐
0
2013.12.21
@아가리싸물어줬으면좋겠다
없어도됨ㅋ
0
2013.12.21
포인터까지는 얼마 남지 않았다

남은거라곤 해봤자
이제 구조체하고 포인터뿐이냐?
아니면 함수도 포인터 전으로 생각할꺼냐?
파일입출력은 포인터로 넣어서 할꺼냐?

도대체 포인터까지 어디까지 한다는겨~
0
2013.12.21
@준가르
내가 꼴리는만큼.
일단 휴일이니 존내놀아야지
0
2013.12.21
@StudyOfIT
휴일이니까 논다고? 배부른 소리하지마!!
일해!! 공부해!! 남주는거 아녀!!
난 월화수목금토일 다 일한다고!!!
0
2013.12.21
@준가르
ㅠㅠ
0
2013.12.21
@준가르
이중리스트는 안함?ㅎㅎㅎㅎㅎㅎ
0
2013.12.21
포인터가 제일 죶같던데 난
0
@원천성일
C에서 가장 어려운 부분이 포인터라는건 모두가 동의할껄
0
2013.12.23
외출다녀왔다. 존나 피곤하니 잠좀 자고 새벽에 쓴다
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 12 21 일 전
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23