728x90

 

2014.03.12 수업 ver1_0a.docx

 

2014. 03. 12 수업 및 과제 


1. 문자의 표현방식과 문자를 위한 자료형 

 1.1 아스키(ASCII)코드(America Standrd Code Information Interchange)

아스키 문자 확인- 도스창에서 키보드 Alt key 누른 체 숫자 누름 

BIOS(Basic Input Output System) 안에 내장

아스키 코드 127 / 111 1111 > 7bit -> 표준 아스키 코드 

확장 아스키 코드--> 127 / 1111 1111 > 7bit 이후 다른 나라 아스키 코드 확장됨

문자를 저장하는데 최적화 된 것은 char 형임(1 byte = 8bit = 1111 1111)

32bit(4byte) 컴퓨터에서는 int형(4byte)을 쓰는 것이 속도 면에서 유리함.

버스 라인 32bit(4byte) 중 char(1byte)형을 쓴다면 나머지 3byte는 쓰지 않는 것에 처리 명령 수행

                                              [아스키(ASCII)코드 표]

[예제]

#include <stdio.h>
int main()
{
  int       iNum;   /*4 byte*/
  short  sNum; /*2 byte*/
  char   cNum; /*1 byte*/
  iNum=sNum=cNum='A'/* iNum=sNum=cNum=65; */
              /* 위 두 문장은 동일하다 */
  printf("%d \n" ,iNum);
  printf("%d \n" ,sNum);
  printf("%d \n" ,cNum);
  printf("%c \n" ,iNum);
  printf("%c \n" ,sNum);
  printf("%c \n" ,cNum);
  
  return 0;
}

[결과]

 

 1.2 한글 MS-DOS

도스 창에서 edit 아래 화면

 1.3 실수 형 메모리 크기

  

1.4 \n \t 아스키 코드의 이해

[예제]

#include <stdio.h>
int main()
{
  char cNum1;
  char cNum2;
  cNum1 = '\n';       /* 개행문자 */
  cNum2 = '\t';       /* Tab key */
  printf("%d \n",cNum1);     /* 아스키 코드 10 */
  printf("%d \n",cNum2);     /* 아스키 코드 9 */
  printf("---\t===\n");     /* \t는 TAP키 기능 */
  return 0;
}

[결과]

 

2. 자료 형의 변환(묵시적 형 변환)

2.1 하향식 형 변환(Down casting)

[예제]

#include <stdio.h>
int main()
{
  int iNum;
  iNum = 3.2;     /* 3.2는 double형이나 int형으로 선언 */
  printf("%d \n", iNum); /* 따라서 정수3이 출력 */  > 하향식 형 변환
  return 0;
}

[결과]


 

2.2 상향식 형 변환(Up casting)

     큰 쪽으로 변환.  

[예제]

#include <stdio.h>
int main()
{
  int iNum;
  iNum = 1+1.4;     /* 3.2는 double형이나 int형으로 선언 */
  printf("%d \n", iNum); /* 따라서 정수3이 출력 */  > 상향식 형 변환
  return 0;
}
  

[결과]

      2.4   * 실수형으로 형 변환

 

2.3 명시적 형 변환

[예제]

#include <stdio.h>
int main()
{
  int iNum1;
  int iNum2;
  double divresult;
  iNum1 = 3;
  iNum2 = 4;
  divresult = (double)iNum1 / iNum2;
                  /* (double)->casting 연산자 > 명시적 형변환 */

                  /* iNum1, iNum2 를 double  float형 변환 시킨다음 계산 */
         printf("나눗셈 결과:%f \n", divresult); 

          return 0;
        }

[결과]

2.4 산술연산에서의 형 변환 규칙

자동 형 변환은 데이터의 손실을 최소화하는 방향으로 진행

 

      

3. printf 함수와 scanf 함수 정리 하기 

         3.1 특수문자의 종류

         3.2 printf 함수의 서식문자

 

         3.3 printf함수의 필드 폭을 지정하여 정돈된 출력 보기

[예제]

#include <stdio.h>
int main()
{
  printf("%6.2f \n"11.56789); 
  /* %6.2f : 6(전체 자리수) .2(소숫점 자리수) */  
  
return 0;
}
  

[결과]

 

 

 

 

 

 

'…™업무일지。' 카테고리의 다른 글

[smart]이재우-20140314  (0) 2014.03.14
[smart]이재우-20140313  (0) 2014.03.13
[smart]이재우-20140311  (0) 2014.03.11
[smart]이재우-20140310  (0) 2014.03.10
[smart]이재우-20140307  (0) 2014.03.07
728x90

 

2014.03.11 수업 ver1_0a.docx

 

2014. 03. 11 수업 및 과제 


1. 비트 연산자 

 1.1 CPU 구성 

ALU(Arithmetic Logic Unit):산술논리 연산장치

-산술연산: 덧셈, 뺄셈, 곱셈, 나눗셈

-논리연산: AND, OR, NOT, XOR..

CU(Control Unit) : 제어 유니트

-프로그램 코드(명령어)를 해석/실행하기 위한 제어신호 하드웨어 모듈

레지스터(Register)

-cpu내부에 위치한 기억장치

-특수 목적용 레지스터

-일반 목적용 레지스터

 1.2 & 비트단위 AND 연산(4byte -> 32bit) 

 int iNum1=3;

int iNum2=4;

 3

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 1

 1

 4

 0

 0

 0

 0 

 0 

 0 

 0 

 0 

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 1

 0

 0

 7  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

 0

 

4byte -> 32bit

 

 1.3 | 비트단위 OR 연산(4byte -> 32bit) 

 A | B  C 
 0

 0

 0

 0

 1

 1

 1

 0

 1

 1

 1

 1

 

 1.4 ^ 비트단위 XOR 연산(4byte -> 32bit) 

 A ^ B

 C 
 0

 0

 0

 0

 1

 1

 1

 0

 1

 1

 1

 0

 

 1.5 ~(틸드) 비트단위 NOT 연산(4byte -> 32bit)        

~ A

 B 

 0

 1

 1

 0

 

 

예제) iNum1 = 0xFFFFFFF0;

 

   iNum3 = ~iNum1;
   printf("iNum1 의 결과: %x \n", iNum1);
   printf("NOT[~] 의 결과: %x \n", iNum3);

결과) iNum1 의 결과: fffffff0   (1111 1111 1111 1111 1111 1111 1111 0000) 

 

   NOT[~] 의 결과: f       (0000 0000 0000 0000 0000 0000 0000 1111) 

 

 

 1.6 ^ 비트단위 XOR 연산(4byte -> 32bit) 

 A ^ B

 C 
 0

 0

 0

 0

 1

 1

 1

 0

 1

 1

 1

 0

 

1.7 >> << Shift 연산자 :오른쪽/왼쪽 이동(4byte -> 32bit) 

     [예제]

[결과]

 

1.8 >> << Shift 연산자 :오른쪽/왼쪽 이동(4byte -> 32bit) 

 아래 출력 결과해석;

  signed int: 범위

  unsigned int :

 

1.8.1 << Shift 연산자 

-좌로 밀면 2배수로 크짐 > 결국 0이 된다

1.8.2 >> Shift 연산자 

-우로 밀면 2나누기 몫의 값이 발생 > 결국 -1값을 만난다.

☞ Shift 연산이 (*)곱하기나 (/)나누기 보다 연산 속도가 빠르다.

    현재는 컴파일러가 알아서 해줌. 

 

2. 상수 연산자 

- 상수 ≠ 변수 

 iNum = 100;

 L(Left) Value

 

  R(Right) Value

  iNum

=

 100

 메모리 공간 (변수).

 상수는 올수 없음.

 주소를 가진다.

 

 변수, 상수 올 수 있음.

 

 

 

 

변수를 상수로 만드는 키워드

int, include, float..등등 > 변수이음으로 쓸수 없다.

 

 2.1 constant

       - 한번 지정하면 변하지 않는 수

       - Read Only

       - constant 선언 : const int ciNum = 100;

[예제]

#include <stdio.h>
void main()
{
  int iNum=3;
  const int ciNum=100;
  iNum=200;  
  ciNum=1000;    --> const int로 정의 값을 넣을 수 없으며 100으로 고정.

  printf("%d \n" , iNum);  
  printf("%d \n" , ciNum);
  
  return 0;  
}

       [결과]   ciNum=1000;  에러 메세지    

     

   

 2.2 sizeof()  

자료형의 크기 확인 하는 연산자

[예제]

#include <stdio.h>
void main()
{
  char ch=9;
  int iNum=1052;
  double dNum=3.1415;

  printf("변수 ch의 크기 : %d \n"sizeof(ch));
  printf("변수 iNum의 크기 : %d \n"sizeof(iNum));
  printf("변수 dNum의 크기 : %d \n"sizeof(dNum));

  printf("char의 크기 : %d \n"sizeof(char));
  printf("int의 크기 : %d \n"sizeof(int));
  printf("long의 크기 : %d \n"sizeof(long));
  printf("long long의 크기 : %d \n"sizeof(long long));
  printf("float의 크기 : %d \n"sizeof(float));
  printf("double의 크기 : %d \n"sizeof(double));

  return 0;  
}

[결과]

 

int iNum3=iNum1&iNum2; 

'…™업무일지。' 카테고리의 다른 글

[smart]이재우-20140313  (0) 2014.03.13
[smart]이재우-20140312  (0) 2014.03.12
[smart]이재우-20140310  (0) 2014.03.10
[smart]이재우-20140307  (0) 2014.03.07
[smart]이재우-20140306(2)  (0) 2014.03.06
728x90

2014.03.10 수업 ver1_0a.docx

 

 

 

2014. 03. 10 수업 및 과제 


1. 키보드로부터의 데이터 입력과 C언어

 

 

1.1 scanf() 

Standard input/output

stdio.h       standard input 약자

입력 함수:scanf()

출력 함수:printf()

 

1.2 scanf(A, B, C) 

메모리 공간 필요(2번째 이후 B, C)

& -> ampersand/주소 연산자 

scanf("%d", &iNum);

 

[예제]

 #include <stdio.h>
int main()
{
  int iNum1, iNum2, iNum3;
  int iResult1, iResult2, iResult3, iResult4;

  printf("첫번째 정수입력:");
  scanf("%d"&iNum1);
  printf("두번째 정수입력:");
  scanf("%d"&iNum2);
  printf("세번째 정수입력:");
  scanf("%d"&iNum3);
  
  iResult1=(iNum1-iNum2)*(iNum2+iNum3)*(iNum3%iNum1);  
  iResult2=iNum1-iNum2;
  iResult3=iNum2-iNum3;
  iResult4=iNum3%iNum1;  

  printf("iNum1(%d)-iNum2(%d)= %d\n", iNum1, iNum2, iResult2);
  printf("iNum2(%d)+iNum3(%d)= %d\n", iNum2, iNum3, iResult3);
  printf("iNum3(%d)%%iNum1(%d)= %d\n", iNum3, iNum1, iResult4);

  printf("연산결과 = %d\n", iResult1);
  return 0;
}

 

 

2. 정수와 실수의 표현방식

2.1 MSB(Most Sifnificant Bit):최상위 비트

2.2 실수의 표현방식(IEEE 표준 규약)

     

→실수는 소수점을 포함한 수

  실수는 float형, double형 long double형이 있다.

※실수형의 단위 알아보기

<결과>

 

float형의 저장방법

→float형은 IEEE754 저장방식을 이용한다. 여기서 IEEE는 ‘미국 전자전기 학회’를 뜻한다. 즉, IEEE에서 지정을 하면,     그것이 표준이 된다.

→float 형은 4byte (32bit) 이다.

1byte ☞ 1비트의 부호비트(signed bit)와 8비트의 지수부(expotent part),

3byte-1bit ☞ 23비트의 소수부(mantissa part)로 구성.

※지수부(승수)를 계산 할 때는

승수+127(바이어스)를 해준다. 값을 8bit에 넣어준다. 범위는 -128~127까지이다.

※소수부는 1010 1111 1100 1000.1010 1011의 숫자에 정규화를 하여

1.010 1111 1100 1000 1010 1011 로 만든 다음 정수는 항상 1이기 때문에 정수를 제외한 소수부분 23자리를 소수부에 입력해준다.

 

부동 소수점의 저장 방식에 대하여

float 형은 4byte IEEE 754 규약을 따름

  IEEE 754에 따르면 실수형 데이터타입의 대표적인 float형의 저장 방식

float형의 데이터의 메모리 내 저장 방식

부호비트

지 수 부

가 수 부

1bit

8 bit

23 bit

      4byte 32비트의 크기

부호비트: 부호비트 0(+)/1(-)

지수부: 지수승

가수부: 첫 번째 비트는 2 -1승 두 번째 비트는 2 -2승을 나타내며 총 23비트

 

 실제 예 3.2f를 저장한다고 하면, 먼저

 3.2f이진수 11.001100110011……

 지수승으로 표현 소수점을 일의 자리 이동. 따라서 3.2(10) = 1.1001100110011…x21(2)이 된다.

 부호비트는 양수 0

 지수부는 IEEE 754의 규약에 따르면 대수연산의 편의를 위해 2 n승은 127+n으로 표시한다. 위에서는 2 1승이므로 127+1 = 128이 된다. 이를 2진수로 표현하면 10000000

 또한, 가수부에서는 정수 부분의 1은 항상 존재하는 것이기 때문에 생략을 하고 그 이하 소수점 부분만을 저장한다. 따라서 가수부는 소수점 이하 23자리까지 표현하며 24번째 자리에서는 CPU의 특성에 따라 올리거나 버리게 된다. Intel CPU에서는 올리기 때문에 가수부에 저장되는 값은 10011001100110011001101이 된다.

 이를 모두 합쳐서 표현하면 0 1000000 10011001100110011001101이 된다.

 

    

 

위의 실행결과 화면은 3.2f가 실제 메모리에 저장된 순서대로 16진수와 2진수로 출력한 것이다.

Intel CPU에서는 Little Endian방식으로 데이터가 저장되므로, 역순으로 나타내면 404CCCCD이며,

2진수로 나타내면, 0100 0000 0100 1100 1100 1100 1100 1101

 

2.3 소숫점 13.25의 2진수 변환  

13.25  정답 ☞1101.01

 

[13의 이진수]
8 4 2 1
=1101

 

[0.25의 이진수]

 

0.25 자리올림 1.0될때 까지 소숫점 * 2를 한다. 

0.25 * 2 = 0.5 _자리 올림 없음☞ 0
0.5 * 2 = 1.0 _자리 올림 발생☞ 0
0.01

 

[1101.01]

3.2(10) = 1101.01(2)= 1.10101…x23(2)

지수부 = 127 +지수(23(2)) =127+지수(3)=130=1000 0010(2)

 *가장큰수 +128, 가장 작은수 -127

 -지수부[0.0000101] -> 지수부로 표현[1.01…x2-5(2)]

               = 127+지수(-5)=122=111 1010(2)

가수부 = 1 0101(2)   

 

2.3.1 float형의 데이터의 메모리 내 저장 방식(IEEE 754) 예) 3.2(10) = 1101.01(2)

부호

비트

 지수부(8bit)

가수부(23bit)

 0

 1

 0

 0

 0

 0

 0

 1

 0

 1

 0

 1

 0

 1

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 

     2.4 float 예제

 #include <stdio.h>
int main()
{
  float fNum;
  fNum=3.0/2.0;

  /*실수형으로 입력시 결과는 실수 출력*/
  printf("%f \n", fNum);

  return 0;
}

  #include <stdio.h>
int main()
{
  float fNum;
  fNum=3/2;

  ☞/*정수형으로 입력시 아래 결과는정수 출력*/
  printf("%f \n", fNum);

  return 0;
}

 결과 출력 1.500000

 결과 출력 1.000000

실행

 

'…™업무일지。' 카테고리의 다른 글

[smart]이재우-20140312  (0) 2014.03.12
[smart]이재우-20140311  (0) 2014.03.11
[smart]이재우-20140307  (0) 2014.03.07
[smart]이재우-20140306(2)  (0) 2014.03.06
[smart]이재우-20140306(1)  (1) 2014.03.06
728x90

 

2014.03.07 수업 ver1_0a.docx

 

2014. 03. 07 수업 및 과제

 


 

1. 정수 형 

1.1  정수의 범위 개념 설명

 

1 byte = 8bit  > 0~255   > char, unsigned char
2 byte = 16bit > 0~ 65535 > short, unsigned short
4 byte = 32bit > 0~ 43억  > int, unsigned int, long, unsigned long
8 byte = 64bit > 0~ ....... > long long, unsigned long long

 

int : 4 byte(프로그램 컴파일러에 따라 다를 수 있다.)
1 byte = 8 bit
4 byte = 32bit

 

10진수   32bit

       

1.2 정수의 범위 표(p115)

      

 

                                 <unsigned 선언을 포함하는 정수 자료형의 보편적인 크기>

 

  

2. 변수를 이용한 데이터의 저장(p51)

2.1 win-Dos[예제(p52)]

#include <stdio.h> 
int main()
{
  int num1;
  int num2;
  int num3;
  int num4;
  num3=30;
  num4=40;
      printf("num1:[%d], num2:[%d]\n", num1,num2);
      num1=10;
      num2=20;
          printf("num1:[%d], num2:[%d]\n", num1,num2);
          printf("num3:[%d], num4:[%d]\n", num3,num4);
  return 0;
}

 

[결과]

 

2.2 리눅스[예제(p52)]

 

[결과]

 

3. 변수 이름의 정의 

3.1 예) char cNum;

c:소문자(char 의미) Num(N:대문자 Num:변수의 의미)

 

CPU 계산속도

 사칙연산: 덧셈(1초) > 뺄셈(2초) > 곱셈(13초) 

 변수계산: 정수형(1초) > 실수형(13초) 

프로그램시 CPU의 계산 속도를 고려하 프로그램을 코딩한다.

 

4. 연산자 

4.1 복합 연산자+=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= 

 

CPU 계산속도

 사칙연산: 덧셈(1초) > 뺄셈(2초) > 곱셈(13초) 

 변수계산: 정수형(1초) > 실수형(13초) 

      

4.2 증가, 감소 연산자(++iNum --iNum)

++iNum: 전치 연산(선 증가 후 연산) 

iNum++: 후치 연산(연산 후 증가)

-.단독으로 쓸때는 결과는 값음

-.객체가 개입(c++) 되었을때 전치가 계산 속도가 빠름

[예제]

 

4.3 관계 연산자

<결과값 반환>

 -참 > 1

 -거짓 > 0

 -거짓(0) 이외의 모든 것은 (1)으로 인지 함

   예) 0.1, -1 > 참(1)을 반환함

 

 ☞ 관계 연산자의 결과 값은 참(1)과 거짓(0) 뿐임

 

4.4 논리 연산자

 ☞ 논리 연산자의 결과 값은 참(1)과 거짓(0) 뿐임

 

※잘 못 코딩한 예 

  프로그램시 주의할 ++ 증가 연산자  

 

int iNum9;
int iNum10;

 

iNum9=100;

iNum10=7||(++iNum9);

         

printf("iNum9=[%d]\n", iNum9);
printf("iNum10=[%d]\n", iNum10);

 [결과]

 iNum9=[100]  <- 101결과 값이 출력이 되지 않음

                          iNum10=7||(++iNum9); 수식에서 OR연산시 7이 이미 참(1) 이므로

                          뒤를 수행하지 않음 예방법: 코딩 시 반듯이 분리해서 코딩 해야 함.

  iNum10=[1] 

 

  [예제]

 

 

 

'…™업무일지。' 카테고리의 다른 글

[smart]이재우-20140311  (0) 2014.03.11
[smart]이재우-20140310  (0) 2014.03.10
[smart]이재우-20140306(2)  (0) 2014.03.06
[smart]이재우-20140306(1)  (1) 2014.03.06
[smart]이재우-20140305  (0) 2014.03.05
728x90

6. 변수 

_ CPU 내부 메모리: register라 함

 _ CPU 외부 메모리: ram, rom

  ☞ 둘의 실행 속도 차이가 무척 크다/ 내부 메모리 가격이 크므로 현재는 외부 메모리를 이용할 수

      밖에 없음

예) number3=number1+number2;

     number3=4+4;

☞number3=4+4;  와 같이 코딩하는 것이 속도가 훨씬 빠르다.

<예제실습>

 

 

_리눅스 결과 창

 parse error before "int" > int 전에 문법적인 에러(parse:문법적으로 분석하다)

 

_윈도우 도스 결과창

☞결론: 모든 변수 선언은 문장 초기에 선언한다.

 

7. 변수의 자료형(Data type) page55

_ 정수형 변수: 정수의 저장 목적으로 선언된 변수(char, short, int, long)

int : 4 byte(프로그램 컴파일러에 따라 다를 수 있다.)

1 byte = 8 bit

4 byte = 32bit

 

10진수   32bit

_ 실수형 변수: 실수의 저장 목적으로 선언된 변수(float, double)

 

8. C언어의 다양한 연산자 page56

8.1 대입 연산자(=)와 산술 연산자(+,-,*,/,%)

_ 정수형 변수: 정수의 저장 목적으로 선언된 변수(char, short, int, long)

_ 실수형 변수: 실수의 저장 목적으로 선언된 변수(float, double)

 

'…™업무일지。' 카테고리의 다른 글

[smart]이재우-20140310  (0) 2014.03.10
[smart]이재우-20140307  (0) 2014.03.07
[smart]이재우-20140306(1)  (1) 2014.03.06
[smart]이재우-20140305  (0) 2014.03.05
[smart]이재우-20140304  (0) 2014.03.04
728x90

 

2014.03.06 수업.docx

 

2014.03.06 수업 및 과제 


1. printf("Hello World \n");

    1.1  printf("Hello World \n");

int printf("Hello World \n");  int 가 생략되어 있음 -> printf 함수

printf 함수 기본형: printf(" "); " " 안의 글자를 출력

\n -> enter 명령

도스: 기본적으로 \n 가 포함되어 있음

Hello World

한칸

두칸

_  여기에 위치

리눅스: \n이 없으면 문장이 끝이 안남

1.2 \n의 의미: 라인 피드(줄 바꿈) + 캐리지 리턴(커서가 맨 앞으로 감) 이 동시에 실행 

1.2.1 리눅스에서 \n의 실행 확인

a. zterm 실행해서 vi main.c 실행 "\n" 를 뺀 Printf()함수 예제를 작성함

 #include <stdio.h>
    int main()
    {
         printf("Hello ");
         return 0;
     }

 

b. 작성한 파일이 저장되어 있는 서버(ftp://192.168.10.100/%B8%AE%B4%AA%BD%BA%B0%F8%C0%AF%C6%FA%B4%F5/ljweng/20140306/)에서 파일을 내 PC복사

 

c. 메모장 에서 main.c 파일 열기

 

d. zterm 에서 실행 결과 확인

컴파일 : gcc -o main main.c

실행 명령어 : ./main 

 

1.3 리눅스에서 아래 두개의 명령이 같은 의미

gcc -o main main.c
cc -o main main.c
gcc version 확인 방법
gcc --version
cc --version
☞실행 화면

       

1.4 도스 실행 창에서 컴파일 실행하기

     컴파일 및 명령어: cl main2.c

    

 

1.5 리눅스 ztem에서 컴파일 및 실행 하기 

컴파일 명령어: gcc -o main2 main2.c

실행 명령어: ./main2

 주의 : ./ 리눅스에서  현재 디렉토리가 찾지 못할 경우도 있으므로

           현재의 디렉토리 ./를 항상 습관화 해야 함

    

 

2. 주석 처리 방법(윤성우의 열혈 C프로그램)

2.1 방법1 /* ---------*/

     방법2 //

 간단한 처리

 

3. 진법

 2진법(Binery), 8진법(Octal), 10진법(Decimal), 16진법(heXadecimal)

 

4. printf 함수의 기본적인 이해(page43)

4.1 %d\n 함수의 사용 > 1234 정수 출력

 

 

4.2 %x\n 함수의 사용 > 소문자(x)16진수 출력

 

4.3 %X\n 함수의 사용 > 문자(X)16진수 출력 

 

 

4.4 [%D]\n 함수의 사용 > [ ]중 괄호 출력 

  

 

5. 블러그 Tip

     5.1 실행 프로그램: Source2Html.exe 실행

     5.2 메모장 바탕 에서 단축키(ctrl + a) 전체 선택 후 아래 화면에 붙여넣기(ctrl + v) 

     

5.3 c/c++ 체크 후 HTML로 변환 클릭 -> 아래 화면

5.4 위 창에서 전체 드레그 후 붙여 Tistory 블러그레 붙여 넣기 > 아래 화면 출력

#include <stdio.h> 
int main()
{
  printf("Hello Everybody\n");
  printf("[%d]\n"1234);
  printf("[%d] [%d]\n"1020);
  return 0;
} 

6. 변수(메모리 할당) page51

_ 변수의 이름: 알파벳, 숫자, 언더바(_)로 구성

_ C언어는 대소문자를 구분

_ 변수의 이름은 숫자로 시작할 수 없고, 키워드도 변수의 이름으로 사용할 수 없다.

_ 이름 사이에 공백(X), 특수문자(X) > 사용할 수 없음.

 

int number;     > 변수선언 int : 정수(4byte)

number=3+4;    > = : 대입연산자(3+4) number 변수에 넣음   

 

 

예제)

#include <stdio.h> 
int main()
{
  int number1;
  int number2;
  number1=3;
  number2=4;

  printf("number1=[%d]\n", number1);
  printf("number2=[%d]\n\n", number2);
  
  number1=number2;
  
  printf("number1=[%d]\n", number1);
  printf("number2=[%d]\n", number2);
  
  return 0;
}

☞실행 화면 

 

 

 

'…™업무일지。' 카테고리의 다른 글

[smart]이재우-20140307  (0) 2014.03.07
[smart]이재우-20140306(2)  (0) 2014.03.06
[smart]이재우-20140305  (0) 2014.03.05
[smart]이재우-20140304  (0) 2014.03.04
[smart]이재우-20140303  (0) 2014.03.03
728x90

 

2014.03.05 수업.docx

 2014.03.05 수업 및 과제 

1. 컴파일 과정

visual c++ like.c 파일을 컴파일 하는 과정

like.c - (전처리기) - like.i (전처리 결과) - (컴파일) - like.asm(어셈블리파일) - 어셈블리 -> like.obj( 오브젝트[기계어] 파일 ) - 링크 - like.exe(실행 파일[기계어])

 - main.i 생성 명령 : cl /P main.c

 - main.asm 생성 명령 : cl /Fa main.c   

 2. Microsoft Visual Studio 실행 창에서 줄 번호 보기 설정

  

 3. Microsoft Visuall Studio 실행 후 main.i main.asm main.obj main.bin 파일 보기

   아래 그림 적색 화면에 main.i main.asm main.bin main.bin main.c 

   main.bin 파일은 main.exe 파일 확장자 .exe를 bin으로 바꾼다. 확장자기 exe 이면 바로 실행 하기 때문에

   확장자 .bin으로 변경 

 

  

 

  윈도우 단축키

 

    윈도우키 + r > 실행 > 에러시 Run.time.error 라 함

 

4. zterm

gcc 명령어로 main.i main.asm main.bin main.bin 파일 생성 하기

gcc --save-temps -o main main.c

main.i main.o main.s 파일 생성

 

5. 실행기준

<windows> 확장자를 보고 파일를 예)판단이름.exe

<unix 계열> 파일을 직접 판단하지 않음  

리눅스 파일 권한 설명 

 -rwx------  27  root  root  4096  3월  5  11:33  ../ 

 -

 rwx

 ---

 ---

 27

root 

 root  4096

 3월

 5  11:33 ../ 

 -일반파일

 d디렉토리

소유주

권한

그룹 권한

 기타 권한

 

소유자

계정

그룹

계정

파일

크기

 날짜

 시간

 디렉토리

/파일

 

r(읽기)

w(쓰기)

x(실행)

권한있음

-(읽기

권한없음)

-(쓰기

권한없음)

-(실행

권한없음)

-(읽기

권한없음)

-(쓰기

권한없음)

-(실행

권한없음)

 

 

 

 

 

 

 

 

  

 

6. main.c 기본형 설명

 

<그림1>

 

6.1 main.i 파일 내용 앞줄 0~ 5000(stdio.h 파일)까지 내용    

     ->그 뒤는 위의 <그림1> 파일 내용이 나옴

 

6.2 windows #include <stdio.h> 설명

     #의 의미: 전처리 영역

     <stdio.h>파일 경로-> C:\Program Files\Microsoft Visual Studio 10.0\VC\include\stdio.h

     windows 환경변수 내용 보기-> 시작/실행/cmd 도스 창에서 set 명령

 

 

    리눅스 #include <stdio.h> 설명

     <stdio.h>파일 경로-> usr/incldue/stdio.h

     리눅스 환경변수 내용 보기-> zterm_14 실행/도스 창에서 set 명령

 

 

6.3  int main(void) -> int:결과  void:조건 main:함수 이름 ->함수(function):진입 점(entry_point)

int ->정수(integer)

main -> 중요한

void ->없다/회피하다 (생략 있는 것으로 간주)

 

 

6.4  { ->시작

printf("Hello World \n");

return 0;  return:실행하기 전의 상태로 돌아감 0:문제가 없는 정수(0) 반환 값   

} -> 끝

 

      ※참고 ; -> 명령어 한문장 종료

 

6.5  printf("Hello World \n");

int printf("Hello World \n")int 가 생략되어 있음 -> printf 함수

printf 함수 기본형: printf(" "); " " 안의 글자를 출력

\n -> enter 명령

도스: 기본적으로 \n 가 포함되어 있음

        Hello World

  한칸

  두칸

  _  여기에 위치

리눅스: \n이 없으면 문장이 끝이 안남

 

\n의 의미: 라인 피드(줄 바꿈) + 캐리지 리턴(커서가 맨 앞으로 감) 이 동시에 실행 

 

리눅스에서 아래 두개의 명령이 같은 의미이다

gcc -o main main.c

cc -o main main.c

gcc version 확인 방법  

      gcc --version

cc --version

 

 

      ※참고 ; -> 명령어 한문장 종료

 

'…™업무일지。' 카테고리의 다른 글

[smart]이재우-20140306(2)  (0) 2014.03.06
[smart]이재우-20140306(1)  (1) 2014.03.06
[smart]이재우-20140304  (0) 2014.03.04
[smart]이재우-20140303  (0) 2014.03.03
[업무일지]20140228_리눅스 명령어 및 c 프로그램  (0) 2014.03.03
728x90

 

2014.03.04 수업.docx

2014.03.04 수업 및 과제  


1. creating symbolic link

    zterm 에서 해당 폴더 바로가기 만들기(/mnt/hgfs/One/ljweng )

a. 가상의 방 만들기

ln -s 실제저장경로 가상의방이름

예)ln -s /mnt/hgfs/One/ljweng cwork

b. 바로 가기 명령어 

cd cwork 엔터 하면

실제 폴더는 home/ljweng/cwork 폴더 이지만 이 폴더의 내용이 /mnt/hgfs/One/ljweng 폴더로이동

 

2. compiler

visual stdio 2010(window)

gcc                  (linuxier) g:gnu c:c 언어 c:compiler

 

3. 컴파일 과정

visual c++가 like.c 파일을 컴파일하는 과정
like.c - (전처리기) - like.i (전처리 결과) - (컴파일) - like.asm(어셈블리파일) - 어셈블리 -> like.obj( 오브젝트[기계어] 파일 ) - 링크 - like.exe(실행 파일[기계어])

      - main.i 생성 명령 : cl /P main.c

      - main.asm 생성 명령 : cl /Fa main.c

   

4. gcc가 like.c 파일을 컴파일하는 과정

like.c - (cpp0전처리기 ) - like.i ( 전처리 결과 ) - cc1( c컴파일러) - like.S(어셈블리파일) - as 컴파일러 -> like.o( 오브젝트 파일 ) - ld or collect2 링크 - like 실행 파일

 

5. 바탕화면 도스 창(C:\Documents and Settings\Administrator\바탕 화면)에서 VB 2010 컴파일 및 실행하기

    C:\Documents and Settings\Administrator\바탕 화면>cl main.c

   cl /? --> cl 명령어 도움말 정보

 


 

▶ 윈도우 단축키

윈도우키 + e > 윈도우 탐색기

윈도우키 + Break > 시스템 등록정보

마우스 오른쪽 > 명령 창 열기 > C:\Documents and Settings\Administrator\바탕 화면>도스창

 

바탕화면 도스 창에서 VB 실행파일 cl 파일 찿기

윈도우 키 + e > 윈도우 탐색기 > C:\Program Files\Microsoft Visual Studio 10.0\VC\bin

 

윈도우 키 + break > 시스템 등록 정보 > 고급정보

환경변수(N) 클릭

 <원본>

C:\Documents and Settings\Administrator\Local Settings\Application Data\Bandizip\7z

<변수값 수정1>

C:\Documents and Settings\Administrator\Local Settings\Application Data\Bandizip\7z;C:\Program Files\Microsoft Visual Studio 10.0\VC\bin

추가후 확인  도스 실행 화면 재 실행

C:\Documents and Settings\Administrator\바탕화면>cl main.c 실행

 

 

 

mspdb100.dll 에러 해결   

 mspdb100.dll  파일 찿기

 시스템 등록 정보>시스템 환경변수 창 열기

시스템 등록 정보>시스템 환경변수 수정

<변수값>

C:\Documents and Settings\Administrator\Local Settings\Application Data\Bandizip\7z;C:\Program Files\Microsoft Visual Studio 10.0\VC\bin;C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE

 

 

libcmt.lib 에러 해결   

1 시스템 등록 정보>시스템 환경변수 창 열기

2 새로 만들기 > 새 사용자 변수

  변수 이름 > LIB

  변수 값 > C:\Program Files\Microsoft Visual Studio 10.0\VC\lib

 

 

 

[stdio.h 에러 해결]

1 새로 만들기 > 새 사용자 변수

변수 이름 > INCLUDE

변수 값 > C:\Program Files\Microsoft Visual Studio 10.0\VC\include 

 

[Kernel32.Lib 에러 해결]
1 시스템 등록 정보>시스템 환경변수 창 열기

2 고급 > 편집 > 사용자 변수 편집

  변수 이름 > LIB

  변수 값 > C:\Program Files\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib 

 

 

     

 

 

 

 

 

 

 

 

 

728x90

 

2014.03.03 수업.docx

 

[2014.03.03 수업] 


1. 리눅스 프로그램 컴파일 예제

root /mnt/hgfs/One/ljweng/test 

 

 

2. 리눅스 프로그램 컴파일

gcc -o 실행파일이름 c프로그램이름.c -->실행파일 만들기
 g:만든단체 gnu c: compiler c: 확장자 -o: 출력(output)

./실행파일이름 -->실행파일 실행하기


3. vi 환경 설정

ztem 실행 -- 첫 화면에서
/home/ljweng

vi .vimrc  -->vi 환경 설정파일(vi 실행시 환경 설정)

아래 화면 실행

확장명령(shift키+:) 창에서 숫자 라인보기

:set number 엔터 후

아래 화면 입력

 

1 //*환경설정*//
2 set nu
3 set ts=4
4 set shiftwidth=4
5 set cindent
6 set nowrap
7 set ai
8 set aw
9

wq --> 명령 프롬프트에서 저장하고 빠져 나오기

 

 

 

 

4. Visual Studio 명령 프롬프트(2010)비쥬얼 스튜디오.

먼저 폴더 속성 설정하기

알려진 파일 형식의 파일 확장명 숨기기 체크 해제

 

아래 예문파일 작성 후 확장자 main.c로 바탕화면에 저장

#include <stdio.h>

int main()

{

      printf("야호 \n");

     return 0;

}

 

시작 / cmd / 도스창 실행 --> 마우스 오른쪽 팝업 마우스 표시 확인

c:\Documents and Settings\Adminstrator\바탕화면 드레그 후 복사

 

시작/프로그램/Micro visual studio 2010/visual studio Tools/visual studio 명령 프롬프트(2010) 실행

 

visual studio 명령 프롬프트(2010) 실행 명령창에서
C:\Program Files\Microsoft Visual Studio 10.0\VC>cd "C:\Documents and Settings\Administrator\바탕 화면>" 엔터 후 아래 화면 확인

 

C:\Documents and Settings\Administrator\바탕 화면>cl main.c --> 컴파일(main.obj) 및 실행(main.exe)하기

 

경로(Path)

도스 창에서 한글 영문 전환

chcp 949  --> 한글 전환

chcp 437  --> 영문 전환

 

절대 위치 확인(cp : 복사 명령어)  

 

상대 위치 확인(cp : 복사 명령어)

 

절대경로 확인

 

k.c 파일을 현재 디렉토리로 복사하여라.

cp /home/ljweng/k.c .

 

강제로 디렉토리 지우기

rm -rf  디렉토리명 

 

 

 

728x90

2014.03.04

리눅스 명령어 정리 

범주

명령어

설명

 trainer4

bin

리눅스 실행파일 , ls rm .. 등등

boot

부팅관련 파일, 커널

dev

설치 하드웨어

etc

패스워드, 쉐도우, 리눅스 설정 파일  

home

일반 사용자 계정

lib

라이브러리

mnt

mount 명령을 사용하여, 마운트 시킨 CD-ROM, F-disk등

proc

프로세스 파일 형태로 정장되는 디렉토리.

root

일반 사용자의 디렉토리 /home 아래

root의 폼 디렉토리  

sbin

시스템 관리용 실행 파일

tmp

임시 파일 저장

usr

응용 프로그램 설치

 var

 시스템 운용 중에 생성된 각종 임시파일

/외부 접속에 대한 로그 파일

 etc 

 /etc/passwd

 사용자 정보

 /etc/shadow

 사용자 패스워드

 /etc/services

 서버 서비스 정보

 /etc/issue.net

 접속 화면

 /etc/motd

 로그인 후 접속 메세지

 /~/public_html

 사용자 홈페이지 파일

 

 

2014.02.28 수업.docx

수업
1.telnet ftz.hackerschool.org 접속 방법
시작->실행->telnet ftz.hackerschool.org
공개계정:guest
트레이닝:traniner1
레벨:level1/level1

login:trainer1

trainer2의 S/N: linuxer
trainer3의 S/N: computer
trainer4의 S/N: mungguta
trainer5의 S/N: goodluck
trainer6의 S/N: coffee
trainer7의 S/N: to the top
trainer8의 S/N: player

2. 리눅스

디렉토리 내용보기 ls -
디렉토리 수평내용 보기 ls -a
디렉토리 수직보기 ls -al

화면 지우기 clear
디렉토리 이동 명령 cd / (첫글자+tap key)

디렉토리 만들기 mkdir 디렉토리이름
디렉토리 지우기 rm 디렉토리이름
파일 이름 변경 mv 변경파일이름 새파일이름
파일 복사 cp 파일이름 파일이름

로그아웃 exit
디렉토리 path(경로) pwd
디렉토리 구조 tree
한단계 위로 이동 cd ..
최상위 경로 cd /
자신의 터미널 정보 tty
접속한 서버의 IP 정보 ifconfig
접속자 명단 보기 w
접속자 사이 채팅 write guest /dev/pts/pts번호
모든 사용자에게 메세지 보내기 wall test
대화중지 ctrl + d
자신의 정보 id
이 서버에 어떤 사람들이 계정을 얻어서 사용하고 있는지 cat /etc/passwd
커널정보(커널? 리눅스의 심장부 역할을 하는 파일) uname -a
서버에 설치된 OS가 어떤 버젼인지 확인 cat /etc/*release
리눅스 서버의 패키지 정보 rpm -qa
해당 서버의 cpu정보 수집 cat /proc/cpuinfo

이 서버에 어떤 사람들이 계정을 얻어서 사용하고 있는지 cat /etc/passwd
root:x:0:0:Admin:/root:/bin/bash
root -> 서버에 로그인할 때 사용되는 아이디<계정>
x -> 패스워드 암호 문자열(/etc/shadow -> 상용자들의 패스워드만 모아서 놓은 파일)
Admin -> 관리자 계정 이름
/root -> 아이디
마지막 -> 처음 로그인 했을 때 실행되게 할 프로그램

/***리눅스 환경에서 압축 및 해제(*.zip이나 *.RAR )***
압출 명령어 tar(타르) 또는 gzip(winzip 할아버지)
1. tar(타르)
a. 합치기 : tar cvf 합칠파일 합칠파일들
b. 해제하기 : tar xvf 해제할파일
  -옵션-
  c - Create : 새로운 파일을 만드는 옵션
  x - eXtract: 압출을 해제시키는 옵션
  v - View : 압출이 되거나 풀리는 과정을 출력하는 옵션.
  f - File : 파일로서 백업을 하겠다는 옵션
2. gzip
a. 압축하기 : gzip 파일이름
b. 해제하기 : gzip -d 파일이름
3. 확장자([tar], [gz], [tar.gz], [tgz])
    tar -> tar 프로그램을 사용하여 압출(뭉친)된 파일
    gz  -> gzip 프로그램을 사용하여 압축된 파일
    tar.gz -> tar 프로그램을 사용하여 파일을 합친 후, 또 다시 gzip을 사용하여
              압축을 한 파일
    tgz  -> 위의 tar.gz 을 합쳐서 tgz라는 확장자로 만들 때

/***리눅스 환경에서 텍스트 파일 생성법***/

1. 쉘 프롬프트 상태에서 cat > 파일이름.txt
2. 훤하는 내용을 입력
3. 저장:ctrl + d
4. 파일 확인: ls -al test.txt
5. 파일 내용 확인: cat test.txt
6. 기존 파일에 내용 추가 : cat >> 파일이름.txt


/***리눅스 환경에서 c 파일 생성법***/

1. cat > program.c
리눅스 창에서 c 프로그램
실행 디렉토리 /mnt/hgfs/one/ljweng/test/
실행 디렉토리 에서 vi main.c --> 리눅스에서 메모장 실행

esc key 명령상태
i key 입력 edit 상태 --> 프로그램 할 수 있는 상태
esc key --> 명령 상태로 돌아 가기(command)
: --> 맨 아래로 이동
w --> 명령어 상태에서 단어 이동
숫자+enter --> 명령어 상태에서 원하는 숫자 만큼 이동
dd --> 명령어 상태 한 줄 지우기(ctrl + x 기능)
d 숫자 (아래 or 위)방향키 --> 숫자 만큼 삭제
D 현재 위치로 부터 한 라인 삭제
U 지웠던거 살리기
x --> 명령어 상태에서 지우기(delete)
숫자 x --> 명령어 상태에서 숫자 만큼 지우기(delete)
P  --> 위로붙이기
p  --> 밑으로붙이기
yw --> 복사
y 방향키 --> 두줄 복사
J 아랫줄과 현재 줄을 합침
j 방향키
r 한글자 수정
R 문자 R덮어쓰기
v 문자와 문자 사이 

w enter 확장명령(shift+:)에서 저장하기
set number 확장명령(shift+:)에서 라인 숫자 보기
ll enter
vi main.c 파일 다시 열기

q! 확장명령(shift+:)에서 강제로 저장 않고 빠져 나오기