bis̊mi allãhi alrāḥmani alrāḥīm
기계는 바이너리만 이해합니다. 우리가 컴퓨터에 대해 사람이 읽을 수 있는 명령 목록을 작성할 때 기계는 현재 기계 코드라고 부르는 것만 이해합니다. 이 기계어는 1과 0으로만 구성되어 있습니다.
컴파일러라는 특수 프로그램을 사용하여 소스 코드를 기계어 코드로 변환할 수 있습니다.
우리는 3가지 기준에 따라 좋은 코드를 판단할 수 있습니다:
C 프로그래밍 언어로 화면에 텍스트를 인쇄하려면 printf 함수를 사용합니다.
#includeint main(void) { printf("salom, dunyo\n") }
printf 함수는 hello, world 텍스트를 인쇄합니다. 그 안의 특수 \ 문자는 컴파일러에게 다음 문자가 특수 명령어임을 알려줍니다. 그리고 다음 n 기호는 "새 줄" (새 줄)을 의미합니다.
코드의 첫 번째 줄에 있는 표현식은 stdio.h라는 라이브러리의 기능을 사용하겠다고 말하는 매우 특별한 명령입니다. 이 라이브러리를 사용하면 printf 함수를 사용할 수 있습니다.
라이브러리는 코드에서 사용할 수 있는 미리 만들어진 함수 모음입니다.
사용자에게 이름이 무엇인지 물어보며 인사하는 코드를 C로 작성해 보겠습니다.
#include#include int main(void) { string answer = get_string("Ismingiz nima? "); printf("Assalomu alaykum, %s\n", answer); }
CS50 과정을 위해 특별히 개발된 cs50.h 라이브러리의 기능이 이 과정 전체에서 사용됩니다. 그 중 하나가 get_string 함수입니다. get_string 함수는 사용자가 입력한 텍스트를 검색하는 데 사용됩니다.
Answer는 변수라고 부르는 특별한 사용자 입력 텍스트를 기억하기 위해 예약된 장소입니다. 답변은 문자열 유형입니다. 또한 int, bool, char 등
외에도 많은 데이터 유형이 있습니다.
%s는 printf 함수가 일부 문자열 변수를 받아들일 준비를 하도록 지시하는 형식 코드라는 자리 표시자입니다.
다른 데이터 유형에 대한 형식 코드도 있습니다. 예:
%i는 int(정수)입니다.
사용자에게 int 유형의 x 및 y 변수를 입력하고 입력 숫자를 서로 비교하도록 요청해 보겠습니다.
#include#include int main(void) { int x = get_int("x ni kiriting: "); int y = get_int("y ni kiriting: "); if (x 여기서 int(정수) 유형의 두 변수 x와 y를 생성합니다. 해당 값은 cs50.h 라이브러리의 get_int 함수를 사용하여 채워집니다. 조건 연산자를 이용하여 x, y 값을 비교하고 그 결과에 따라 화면에 메시지를 표시합니다.
블록 다이어그램은 컴퓨터 프로그램이 어떻게 작동하는지 확인할 수 있는 방법입니다. 이 방법을 사용하면 코드의 효율성을 확인할 수 있습니다.
위 코드의 블록 다이어그램을 살펴보겠습니다.다음과 같이 코딩하여 프로그램을 개선할 수 있습니다.
#include#include int main(void) { int x = get_int("x ni kiriting: "); int y = get_int("y ni kiriting: "); if (x y) { printf("x soni y sonidan katta\n"); } else { printf("x soni y soniga teng\n"); } } 이제 가능한 모든 사례가 고려됩니다. 블록 다이어그램을 살펴보겠습니다.
반복 연산자
"meow"를 3번 인쇄해 보겠습니다.
#includeint main(void) { printf("meow\n"); printf("meow\n"); printf("meow\n"); } 우리가 작성한 코드는 올바르게 작동하지만 반복을 피함으로써 프로그램을 개선할 수 있습니다.
#includeint main(void) { int i = 0; while (i 여기서 int 유형의 변수 i가 생성되고 값 3이 할당됩니다. 그런 다음 i for 루프를 사용하여 프로그램 디자인을 더욱 개선할 수 있습니다.
#includeint main(void) { for (int i = 0; i for 루프는 세 개의 인수를 사용합니다.
첫 번째 인수: int i = 0은 카운터를 초기화합니다.
두 번째 인수: i 마지막으로, i 인수는 i가 1씩 증가할 때마다 알려줍니다.
우리는 또한 우리만의 함수를 만들 수도 있습니다:void meow(void) { printf("meow\n"); }void - 함수가 어떤 값도 반환하지 않음을 의미합니다. 괄호 안(void) - 함수가 어떤 매개변수도 허용하지 않음을 의미합니다.
우리는 메인 함수 내에서 생성된 meow 함수를 사용합니다:#includevoid meow(void); int main(void) { for (int i = 0; i 함수 프로토타입은 메인 함수 내부에서 meow 함수를 호출할 수 있도록 코드 상단에 void meow(void)로 명시되어 있습니다.
산술 연산자 및 추상화
C로 계산기를 만들어 봅시다:
#include#include int main(void) { // x qiymati kiritilsin int x = get_int("x: "); // y qiymati kiritilsin int y = get_int("y: "); // Qo'shish amalini bajarish printf("%i\n", x y); } get_int 함수는 사용자에게 정수 변수 x와 y에 대한 값을 입력하도록 요청합니다. 그런 다음 printf 함수는 정수 형식 코드(%i 기호)를 사용하여 x y 값을 인쇄합니다.
산술 연산자는 컴파일러에서 지원하는 수학 연산입니다. C의 산술 연산자에는 다음이 포함됩니다:
- - 추가하다;
- - - 빼기;
- * - 번식하다;
- / - 나누기;
- % - 한 숫자를 다른 숫자로 나눈 나머지를 계산합니다.
추상화는 문제를 더 작은 조각으로 나누어 코드를 단순화하는 기술입니다.
위 코드를 다음과 같이 추상화할 수 있습니다.#include#include int add(int a, int b); int main(void) { // x qiymati kiritilsin int x = get_int("x: "); // y qiymati kiritilsin int y = get_int("y: "); // Qo'shish amalini bajarish printf("%i\n", add(x, y)); } int add(int a, int b) { return a b; } 여기서는 정수 a와 b를 매개변수로 받아들이고 그 합을 반환하는 별도의 add 함수가 선언되었으며, 메인 함수에서 정수 x와 y를 인수로 취하여 add(x, y) 함수가 호출됩니다.
코멘트
주석은 컴퓨터 프로그램의 기본 부분으로, 우리가 작성하는 코드가 수행하는 작업을 설명하면서 다른 프로그래머와 우리 자신에게 명확하고 간결하게 설명하는 주석입니다. 주석을 작성하려면 // 두 개의 태그를 사용하면 됩니다:
#include#include int main(void) { // Musbat butun son kiritilsin int n; do { n = get_int("Musbat butun son kiriting: "); } while (n 데이터 유형
데이터 유형은 변수에 저장할 수 있는 데이터 유형을 지정합니다. 예를 들어 변수는 숫자, 문자 또는 부울 값을 저장할 수 있습니다. 변수의 유형은 컴퓨터에 해당 데이터를 처리하는 방법을 알려줍니다.
C의 일반적인 데이터 유형은 다음과 같습니다.
- bool: true(true) 또는 false(false)
와 같은 부울 값을 담을 수 있습니다.- char: 한 문자만 저장할 수 있습니다.
- float: 소수 값을 갖는 실수.
- int: 소수점이 없는 정수.
- long: 더 많은 비트를 사용하므로 int보다 큰 정수를 저장할 수 있습니다.
- 문자열: 일련의 문자(예: 단어)를 저장할 수 있습니다.
각 종마다 고유한 한계가 있습니다. 예를 들어 메모리 제한으로 인해 int의 최대값은 4294967295가 될 수 있습니다. 최대값을 초과하는 정수를 계산하려고 하면 변수에 잘못된 값이 저장됩니다(정수 오버플로).
메모리를 부적절하게 사용하면 코드에 오류나 문제가 발생할 수 있습니다. 문제를 방지하려면 올바른 데이터 유형을 사용하고 있는지 확인해야 합니다.이 문서는 CS50x 2024 소스를 사용합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3