首頁  >  文章  >  後端開發  >  CS-第 1 週

CS-第 1 週

WBOY
WBOY原創
2024-07-17 10:07:20709瀏覽

機器只理解二進制。當我們為電腦編寫人類可讀的指令清單時,機器只能理解我們現在所說的機器碼。此機器碼僅由 1 和 0 組成。
透過一個名為編譯器
的特殊程序,我們可以將原始碼轉換為機器碼。 我們可以根據3個標準來判斷好的程式碼:

正確性(
    程式碼是否產生了期望的結果?
  • ), 設計(
  • 程式設計或結構是否結構良好?
  • ), 風格(
  • 程式碼寫得怎麼樣?
  • )。
  • 你好世界!

如果我們想在 C 程式語言中向螢幕輸出一些文本,我們使用 printf 函數:


printf 函數列印文字
#include <stdio.h>

int main(void)
{
    printf("salom, dunyo\n")
}
hello, world

。其中的特殊字元告訴編譯器下一個字元是特殊指令。後面的符號n表示「換行」換行)。 程式碼第一行的表達式是一個非常特殊的指令,表示我們想要使用名為 stdio.h 的函式庫的功能。這個函式庫允許我們使用 printf 函數。
函式庫
是我們可以在程式碼中使用的現成函數的集合。 變數

讓我們用 C 寫一些程式碼,詢問使用者他的名字是什麼並向他打招呼:


專門為 CS50 課程開發的 cs50.h 庫的功能將在本課程中使用。其中之一是 get_string 函數。 get_string 函數用於檢索使用者輸入的文字。
#include <cs50.h>
#include <stdio.h>

int main(void)
{
    string answer = get_string("Ismingiz nima? ");
    printf("Assalomu alaykum, %s\n", answer);
}
答案是為記住用戶輸入的特殊文字而保留的地方,我們稱之為變數。答案的類型為

字串
。此外,還有許多其他資料類型,例如 intboolchar 等。 %s 是一個名為 格式代碼
的佔位符,它告訴 printf 函數準備接受某個字串變數。 還有其他資料類型的格式代碼,例如: %i - 表示
int
(整數)。 條件運算符

讓我們要求使用者輸入 int 類型的 x 和 y 變量,並將輸入的數字相互比較:


這裡我們建立兩個 int 類型的變數 (
#include <cs50.h>
#include <stdio.h>

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 kichik\n");
    }
}
integer

),變數 x 和 y。它們的值是使用cs50.h庫的get_int函數填充的。使用條件運算符,我們比較 x 和 y 的值,並根據結果在螢幕上顯示一則訊息。

框圖

是我們檢查電腦程式如何運作的一種方式。透過這種方法我們可以檢查程式碼的效率。 讓我們來看看上面程式碼的框圖:

Conditional 1我們可以透過以下編碼來改進程式:


現在考慮所有可能的情況。讓我們來看看它的框圖:
#include <cs50.h>
#include <stdio.h>

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 kichik\n");
    }
    else if (x > y)
    {
        printf("x soni y sonidan katta\n");
    }
    else
    {
        printf("x soni y soniga teng\n");
    }
}


Conditional 2 重複運算符

讓我們在螢幕上輸出

「喵」

3 次:

我們寫的程式碼可以正常運作,但是我們可以透過避免重複來改進我們的程式:
#include <stdio.h>

int main(void)
{
    printf("meow\n");
    printf("meow\n");
    printf("meow\n");
}


在此,建立了 int 類型的變數 i 並賦予值 3。那我#include int main(void) { int i = 0; while (i < 3) { printf("meow\n"); i++; } } 我們可以透過使用for循環進一步改進我們的程式設計:



for 迴圈需要三個參數。
#include <stdio.h>

int main(void)
{
    for (int i = 0; i < 3; i++)
    {
        printf("meow\n");
    }
}
第一個參數:int i = 0 初始化我們的計數器。

第二個參數: i 最後,i++ 參數意味著每次我們的數字 i 增加一。
我們也可以建立自己的函數:


void 表示函數不傳回任何值。括號中 (void) - 表示函數不接受任何參數。
void meow(void)
{
    printf("meow\n");
}
我們將在主函數中使用這個已建立的 meow 函數:


#include 

void meow(void);

int main(void)
{
    for (int i = 0; i < 3; i++)
    {
        meow();
    }
}

void meow(void)
{
    printf("meow\n");
}

meow funksiyasini asosiy funksiya ichida chaqira olishimiz uchun funksiya prototipi kodning yuqori qismida void meow(void) sifatida berilgan.

Arifmetik operatorlar va akstraksiya

Keling, C tilida kalkulyator yasaymiz:

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

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 funktsiyasi yordamida foydalanuvchidan butun son bo'lgan x va y o'zgaruvchilariga qiymat berishi so'ralyabdi. Keyin printf funksiyasi butun son uchun format kodi - %i belgisi yordamida x + y qiymatini chop etadi.

Arifmetik operatorlar kompilyator tomonidan qo'llab-quvvatlanadigan matematik operatsiyalardir. C tilida arifmetik operatorlarga quyidagilar kiradi:

  • + - qo'shish uchun;
  • - - ayirish uchun;
  • * - ko'paytirish uchun;
  • / - bo'linish uchun;
  • % - bir sonni ikkinchi songa bo'lgandagi qoldiqni hisoblash uchun.

Abstraksiya - bu muammoni kichik-kichik bo'laklarga bo'lib hal qilish orqali kodimizni soddalashtirish san'ati.
Biz yuqoridagi kodimizni quyidagicha abstraktlashimiz mumkin:

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

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;
}

Bunda parametr sifatida a va b butun sonlarini qabul qilib oladigan va ularning yig'indisini qaytaradigan alohida add funksiyasi e'lon qilingan va asosiy funksiya ichida argument sifatida x va y butun sonlarini olib add(x, y) funksiyamiz chaqirilyabdi.

Kommentlar (izohlar)

Kommentlar - kompyuter dasturining asosiy qismlari bo'lib, yozgan kodimiz nima vazifa bajarayotganini ifodalovchi, boshqa dasturchilarga, shuningdek o'zimizga tushunarli hamda qisqa qilib qoldirgan izohlarimizdir. Kommentni yozish uchun shunchaki ikkita // beligisidan foydalanamiz:

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

int main(void)
{
    // Musbat butun son kiritilsin
    int n;
    do
    {
        n = get_int("Musbat butun son kiriting: ");
    }
    while (n < 1);
}

Ma'lumot turlari

Ma'lumotlar turlari o'zgaruvchida saqlanishi mumkin bo'lgan ma'lumotlar turini belgilaydi. Misol uchun, o'zgaruvchilar raqamlar, belgilar yoki mantiqiy qiymatlarni saqlashi mumkin. O'zgaruvchining turi kompyuterga ushbu ma'lumotlarni qanday boshqarishni aytadi.
C tilidagi umumiy maʼlumotlar turlari:

  • bool: rost (true) yoki yolg'on (false) kabi mantiqiy qiymatlarni saqlashi mumkin.
  • char: faqat bitta belgini saqlashi mumkin.
  • float: o'nlik qiymatlari bo'lgan haqiqiy son.
  • int: kasrsiz butun son.
  • long: int dan kattaroq butun sonni saqlashi mumkin, chunki u ko'proq bit ishlatadi.
  • string: belgilar ketma-ketligini saqlashi mumkin (masalan, so'z).

Har bir turning o'ziga xos chegaralari bor. Misol uchun, xotiradagi cheklovlar tufayli int ning eng yuqori qiymati 4294967295 bo'lishi mumkin. Agar biz int ni uning eng yuqori qiymatidan o'tkazib sanashga harakat qilsak, bu o'zgaruvchida noto'g'ri qiymat saqlanishiga (integer overflow) olib keladi.
Xotirani noto'g'ri ishlatish kodimizdagi xatolar yoki muammolarga olib kelishi mumkin. Muammolarni oldini olish uchun biz to'g'ri ma'lumot turidan foydalanayotganimizga ishonch hosil qilishimiz kerak.

Ushbu maqolada CS50x 2024 manbasidan foydalanilgan.

以上是CS-第 1 週的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn