모두를 위한 컴퓨터 과학(CS50 2019) [3.배열]

Erdos·2021년 12월 29일
0

감상

목록 보기
3/43
post-thumbnail

https://www.boostcourse.org/cs112/joinLectures/41307
David J. Malan (데이비드 J. 말란)의 <모두를 위한 컴퓨터 과학(CS50 2019)> 수강 내용
※ 터미털 정리: clear or Ctrl+I (궁금했는데!! ㅋㅋ)

1) 컴파일링

학습목표

컴파일의 네 단계

키워드

  • 컴파일링
  • 어셈블링
  • 링킹

컴파일(compile)

  • 소스 코드를 오브젝트 코드로 변환시키는 과정, 프로그램 코드를 컴퓨터가 이해할 수 있는 언어로 변환하는 과정.
    - 소스코드: C언어와 같이 프로그래밍 언어로 작성한 코드
    - 오브젝트코드: 기계어(0과 1로 이루어져 있음)

    출처:https://gracefulprograming.tistory.com/16
  1. precompile(전처리)
    전처리기 = 전처리기 구문을 처리하는 것(#으로 시작되는 구문)
  2. compile(컴파일)
    C코드를 어셈블리어라는 저수준 프로그래밍 언어로 컴파일
  3. assemble(어셈블)
    어셈블리 코드를 오브젝트 코드로 변환(0과 1로 바꿔줌)
  4. link(링크)
    여러 개의 다른 오브젝트 코드 파일을 링커를 통해서,
    실행 가능한 하나의 오브젝트 코드 파일로 합쳐줌

2) 디버깅

학습목표

디버깅

키워드

  • 디버깅
  • help50
  • debug50

버그, 디버깅

  • bug: 코드에 들어 있는 오류
  • debugging: 코드에 있는 버그를 식별하고 고치는 과정

3) 코드의 디자인

학습목표

코드의 정확성과 디자인을 관리하는 방법

키워드

  • check50
  • style50
  • 고무오리

4) 배열(1,2)

학습목표

배열을 정의하고 사용하는 방법

키워드

  • 배열
  • 전역변수
#include <cs50.h>
#include <stdio.h>

float average(int length, int array[]);

int main(void)
{
    // 사용자가 점수 갯수 입력
    int n = get_int("Scores: ");
    
    //
    int scores[n];
    for (int i = 0; i<n; i++)
    {
    	scores[i]=get_int("Score %i:", i+1);
    }
    
    // 평균
    print("Average: %.1f\n", average(n, scores));
}

//평균을 계산하는 함수
float average(int length, int array[])
{
    int sum = 0;
    for (int i = 0; i < length; i++)
    {
        sum += array[i];
    }
    return (float) sum / (float) length;
}

5) 문자열과 배열(2)

학습목표

문자열이 C에서 정의되는 방식과 메모리에 저장되는 방식

키워드

  • 문자
  • 문자열


문자열: char값들의 배열. 마지막 인덱스는 널로 끝남.

  • \0(null-terminator:널 종단): 문자열이 끝났어요~

6) 문자열의 활용

학습목표

문자열을 탐색하고 일부 문자를 수정하는 코드를 구현

키워드

  • strlen
  • toupper
#include <cs50.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    string s = get_string("Before: ");
    printf("After:  ");
    for (int i = 0, n = strlen(s); i < n; i++)
    {
        printf("%c", toupper(s[i]));
    }
    printf("\n");
}

7) 명령행 인자

학습목표

명령행 인자를 받는 프로그램을 C로 작성한다.

키워드

  • 명령행 인자
  • argv
  • argc
#include <cs50.h>
#include <stdio.h>

int main(int argc, string argv[])
{
    if (argc == 2)
    {
        printf("hello, %s\n", argv[1]);
    }
    else
    {
        printf("hello, world\n");
    }
}
profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글