C언어 (1)

khxxjxx·2021년 4월 8일
0

강좌 : 부스트캠프 모두를 위한 컴퓨터과학(cs50 2019)

2. C언어

✍자료형, 형식지정자, 연산자

  • 폴더안에 있는 파일을 컴파일 할때는 $ cd 폴더명으로 들어간 뒤에 컴파일
  • $ ls 확인을 해보면 소스코드(.c), 머신코드(*)와 다르게 폴더명 뒤에는 슬래시(/)가 붙는걸 확인할수 있다.
  • 첫화면으로 돌아가기 위해선 $ cd 를 입력
++ $ cd : 디렉토리 변경

데이터 타입

bool : 불리언 표현 (true/false)
char : 문자 하나 (a,Z)
string : 문자열
int : 정수 (5, -3, 0) 
long : 더 큰 크기의 정수
float : 실수 (3.14, -28.56)
double : 더 큰 실수
++ int는 대략 40억까지 셀수 있고 이 이상의 데이터를 가진 기업에선 long을 사용

형식지정자

%c : char
%s : string
%i : int
%li : long
%f : float, double
++ %^f 사이에 .숫자를 입력해 원하는 소숫점 자리수설정

기타연산자 및 주석

+ : 더하기
- : 빼기
* : 곱하기
/ : 나누기
% : 나머지
&& : 그리고(and)
|| : 또는(or)
// : 주석

📖 연습해보기

// x의 값이 짝수인지 홀수인지 알아보기
#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int i = get_int("x=");
    
    if (i % 2 == 0)  // i를 2로 나눈 나머지 값이 0일경우 짝수
    {
    	printf("짝수\n");
    }
    else  // 그렇지 않을 경우 홀수
    {
    	printf("홀수\n");
    }
}

✍사용자 정의 함수, 중첩 루프

사용자 정의 함수

  • 코드의 가독성을 높이고 타인이 수정하기 용이하다.

cought 3번 반복하기

#include <stdio.h>

int main (void)
{
    for(int i=0; i<3; i+=1);
    {
    	printf("cougch\n")
    }
}

사용자 정의 함수 사용하기

#include <stdio.h>

// 세미콜론(;)과 함께 main 함수보다 위에 위치
void cought(int n);  // cought 라는 함수를 직접 정의한 것

int main(void)
{	
    cought(3);  // 괄호안의 숫자만 변경하면 원하는 횟수출력 가능
}


// 정의한 내용은 안보이게 밑으로 내려버리기
void cought(int n)
{
    for(int i=0; i<n; i++)
    {
    	printf("cought\n");
    }
}
++ 메인함수를 사용자 지정 함수보다 위에 위치시키기 위해선 정의한 함수의 첫번째 코드를 세미콜론(;)과 함께 메인함수 위에 위치 시켜 cought라는 함수가 정의되어있음을 알려줘야한다.

사용자에게 입력값 받기

#include<cs50.h>
#include<stdio.h>

// 함수 왼쪽에 있는 단어는 출력의 종류를 의미
// 함수 괄호 안의 단어는 입력의 종류를 의미
//만약 입출력이 없다면 void를 입력
int get_positive_int(void);

int main(void)
{
    int i = get_positive_int();
    printf("%i\n",i);
}



int get_positive_int(void)
{	
    int n;  //컴퓨터에게 n이라고 하는 변수를 달라는 일종의 힌트
    
    // do-while 루프
    do
    {
    	n=get_int("Positive Integer:");
    }
    while(n<1);
    return n;
}
while 단독 사용시 조건이 참이어야만 수행하지만 do-while은 do에서 무조건 한번은 먼저수행하기 때문에 while(n<1);에서 만약 n이 1보다 작으면 계속해서 질문을 반복

중첩 루프

  • 여러개의 이미지를 가로나 세로로 여러개 이어서 출력할 수 있다.
#include<cs50.h>
#include<stdio.h>

int main(void)
{
    int n;
    
    do
    {
    	n=get_int("Size:");
    }
    while(n<1);  //적은 size가 1보다 작으면 size:를 계속 출력

    
    //#의 갯수와 줄바꿈을 n(size)만큼 반복
    for(int i=0;i<n;i+=1)
    {
    	for(int j=0;j<n;j+=1)
        {
            printf("#");
        }
        printf("\n");
     }
 }

✍하드웨어의 한계

오버플로우

  • 컴퓨터 하드웨어의 한계로 인해 발생
  • RAM은 유한한 크기의 비트만 저장할 수 있기 때문
  • 변수가 담을 수 있는 최대 허용 범위를 벗어난 값을 저장해 예상치 못한 결과가 나온다
profile
코린이

0개의 댓글