카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/27

링크드 리스트

#include <stdio.h>

typedef struct product{
const char *name;
float price;

struct product *next;
} product;

void printLinkedList(product *pProduct){
while(pProduct != NULL){
printf("A %s costs %.2f\n\n", (*pProduct).name, pProduct->price);

pProduct = pProduct->next;
}
}

void main(void){

product tomato = {"Tomato", .51, NULL};
product potato = {"Potato", 1.21, NULL};
product lemon = {"Lemon", 1.69, NULL};
product milk = {"Milk", 3.09, NULL};
product turkey = {"Turkey", 1.86, NULL};

tomato.next = &potato;
potato.next = &lemon;
lemon.next = &milk;
milk.next = &turkey;

product apple = {"Apple", 1.58, NULL};

lemon.next = &apple;
apple.next = &milk;

printLinkedList(&tomato);

}

유니온 공용 구조

#include <stdio.h>

void main(void){
typedef union{
short individual; // 개인
float won; // 원화
float ounce; // 온스
} amount;

amount orangeAmt = {.ounce = 16};

orangeAmt.individual = 4;

printf("Orange Juice Amount: %.2f : Size: %ld\n\n", orangeAmt.ounce, sizeof(orangeAmt.ounce));
printf("Number of Oranges: %f : Size: %ld\n\n", orangeAmt.individual, sizeof(orangeAmt.individual));

orangeAmt.won = 1.5;

printf("Orange Juice Amount: %.2f : Size: %ld\n\n", orangeAmt.won, sizeof(orangeAmt.won));

typedef struct{
char *brand;
amount theAmount;
} orangeProduct;

orangeProduct productOrdered = {"Chiquita", .theAmount.ounce = 16};

printf("You bought %2.f ounces of %s oranges\n\n", productOrdered.theAmount.ounce, productOrdered.brand);

typedef enum{ INDIV, OUNCE, OWN } quantity;

quantity quantityType = INDIV; // OUNCE Change

orangeAmt.individual = 4;

if(quantityType == INDIV){
printf("You bought %d oranges\n\n", orangeAmt.individual);
} else if(quantityType == OUNCE){
printf("You bought %.2f ounces of oranges\n\n", orangeAmt.ounce);
}

}

제어 분기문, 반복문

제어문 종류
분기문 , 반복문.

계산기 : 연산.
프로그램: 경우에 따른 결과 확인.

삼항 연산자 등장.

초기 컴퓨터 환경은 사람들이 직접 스위치를 동작 시키기 위해 선을 연결한 후 스위치를 ON, OFF 작업을 함.
ON, OFF 할 때 경우의 수가 필요 했음.
그래서 if, if else, swich case 문을 사용해 사람이 확인 할 수 있는 테이블 표를 만들고 일일이 그걸 보고 대입 함.

단순 지시문
a) if 이것을 해라.
b) if else 이것을 할 까?, 저것을 할 까?


다양한 경우의 수 논리 구조로 처리 하는 지시문.
c)
if
else if
else if
d) swich case

일일이 대입 하다 보면 특정 입력에 대하여 처리 공식이 나타남.

처음에는 입력의 범위를 모르기 때문에 삼항식을 가지고 경우의 수의 결과를 확인.
삼항식의 참 거짓으로 분류해 놓은 다음, 삼항식의 표현 범위 보다 더 많은 경우의 수를 표현 할 수 있는  if else 문을 사용해 참 거짓 경우의 수 범위 나열.

나열된 항목에 대해, 일정한 간격으로 모았지면  공식(페턴)이 나열 되었다고 보고, 다시 한번 swich case 문을 사용해 범위를 줄여준다.
공식이 완성이 되면, 특정한 페턴을 반복문을 통해 동일한 작업을 수행한다.

1. 분기문
+---------+-----------+ 조건
          | 흐
          | 름
       

분기문 : if 조건 분기
만약에(참, 거짓)
.-------+---+----
        |   |
    실행;    |
    |실행;

거짓 False: 숫자 0
참 True: 숫자 0이 아니 모든 정수

1.1 기본
if(조건식)
A; // 실행

b; // 실행
참: A,B
거짓: B

1.1.2 범위 지정
if(조건식){ // 다수의 명령어
실행 a; // 실행
실행 b; // 실행
}
c; // 실행

참: a,b,c 실행
거짓: c 실행

1.1.3 기본 if else
if(조건식)
a;
else
b;
c;

참: a,c
거짓: b,c

1.1.4 베타적 실행, 두 구문중 하나만 실행된다.
if(조건식) {
a;
b;
}else
c;

1.2 다중 분기분.
만약게(참, 거짓)
다른 경우(참, 거짓)
다른 경우(참, 거짓)
그렇지 않으면


1.2.1
if(조건식)
A 실행;
else if(조건식)
B 실행;
else if(조건식)
C 실행;
    else
D 실행;
E 실행;

1.3 swich case 분기문
동일한 분기문 else if

else if 범위가 swich case 보다 넓다.
swich case 문법을 else if로 변경이 가능하다.
하지만 else if 문법을 swich case로 변경 하는건 불가능하다.

swich(조건식){ // 조건식의 결과는 반드시 정수값. 실수이면, 부동 소수점 오차의 문제
case 1: // 등치 연산, 1과 같은면 A 실행.
A;
break;
case 2:
B;
break;
default:
C;
}

1.4. goto
goto lavle_name
 레이블이 가르킨 곳으로 이동한다.
 치면적 논리적 오류가 생길 수 있다.

2. 반복문 : while, do while, for
동일한 작업을 자동으로 처리하기 위한 공식.
공식을 만들기 위해서는 동일한 페턴을 분석해 찾아 내는게 가장 우선되어야 한다.

2.1 while(조건식) {
실행문; 실행문이 다수이면 { 을 열고 } 닫는다
실행문;
}

초기값, 조건식, 실행, 계수의 기준으로 반복 횟수 설정이 필요하다.
1 초기값
while(2 조건식)
3 실행
4계수(++, --)

반납: 예외처리
반환: main 에서 반환(return)시 프로그램 종료

2.2 do while
do{
1회 실행
} while(조건식);

동일한 코드에 대하여 입력값을 받아야 할 경우 사용한다.

3. for
for(1 초기값; 2 조건비교; 4 계수;)
   3 실행

1 초기값: 초기값은 한번만 연산한다.

4. 반복문 중첩
안쪽 : 행(수평, X)
바같쪽: 열(수직, Y)

A
B
A1
A2
B1
B2
A1-1
A1-2
A2-1
A2-2
B1-1
B1-2
B2-1
B2-2

5. 정지, 계속
break : 정지 -> 조건 비교 없음
continue : 진행 -> 조건 비교 진행
return : 함수를 나간다(반환).