Tady je CS50x

Začínáme

CS50 IDE je webové „integrované vývojové prostředí“, které umožňuje programovat „v cloudu“, aniž byste museli lokálně instalovat jakýkoli software. CS50 IDE vám totiž poskytuje váš vlastní „pracovní prostor“ (tj. úložný prostor), do kterého můžete ukládat své vlastní soubory a složky (tzv. adresáře).

Přihlášení

Navštivte stránku ide.cs50.io a kliknutím na „Sign in with GitHub“ získáte přístup k prostředí CS50 IDE. Po načtení IDE byste měli vidět, že je (ve výchozím nastavení) rozděleno do tří částí. V horní části CS50 IDE je váš „textový editor“, kde budete psát všechny své programy. Směrem dolů je „okno terminálu“ (ve výchozím nastavení světle modré), rozhraní příkazového řádku (CLI), které vám umožní prozkoumávat soubory a adresáře vašeho pracovního prostoru, kompilovat kód, spouštět programy a dokonce instalovat nový software. A vlevo je váš „prohlížeč souborů“, který zobrazuje všechny soubory a adresáře, které se aktuálně nacházejí ve vašem IDE.

Začněte kliknutím uvnitř okna terminálu. Měli byste zjistit, že jeho „prompt“ se podobá níže uvedenému.

~/ $

Klikněte uvnitř tohoto terminálového okna a poté zadejte

mkdir ~/pset1/

následovaný Enterem, abyste vytvořili adresář (tj. složku) s názvem pset1 ve svém domovském adresáři. Dejte pozor, abyste nepřehlédli mezeru mezi mkdir a ~/pset1 nebo jakýkoli jiný znak! Mějte na paměti, že ~ označuje váš domovský adresář a ~/pset1 označuje adresář s názvem pset1 v rámci ~.

Příkaz spustit (tj. spustit) znamená napsat jej do okna terminálu a stisknout klávesu Enter. Příkazy „rozlišují velká a malá písmena“, takže nezapomeňte psát velká písmena, když myslíte malá, nebo naopak.

Nyní proveďte

cd ~/pset1/

abyste se přesunuli do (tj. otevřeli) daného adresáře. Vaše výzva by nyní měla vypadat jako níže.

~/pset1/ $

Pokud tomu tak není, zopakujte své kroky a zkuste zjistit, kde jste udělali chybu.

Nyní proveďte

mkdir ~/pset1/hello

pro vytvoření nového adresáře s názvem hello uvnitř vašeho adresáře pset1. Pak proveďte

cd ~/pset1/hello

abyste se do tohoto adresáře přesunuli.

Máme vám napsat váš první program? V nabídce Soubor klikněte na Nový soubor a uložte jej (jako přes volbu Uložit v nabídce Soubor) jako hello.c uvnitř svého adresáře ~/pset1/hello. Pokračujte v psaní svého prvního programu tak, že do souboru napíšete přesně tyto řádky:

#include <stdio.h>int main(void){ printf("hello, world\n");}

Všimněte si, jak prostředí CS50 IDE přidává při psaní „zvýraznění syntaxe“ (tj. barvy), i když volba barev v prostředí CS50 IDE se může lišit od této sady úloh. Tyto barvy nejsou ve skutečnosti uloženy uvnitř samotného souboru; jsou pouze přidány prostředím CS50 IDE, aby vynikla určitá syntaxe. Kdybyste soubor od začátku neuložili jako hello.c, CS50 IDE by nepoznal (podle přípony názvu souboru), že píšete kód v jazyce C, a v takovém případě by tyto barvy chyběly.

Listování souborů

Následující, v okně terminálu, hned napravo od výzvy (~/pset1/hello/ $), spusťte

ls

Měli byste vidět právě hello.c? To proto, že jste právě vypsali soubory ve složce hello. Konkrétně jste provedli (tj. spustili) příkaz s názvem ls, což je zkratka pro „seznam“. (Je to tak často používaný příkaz, že ho jeho autoři nazvali jen ls, aby ušetřili stisk kláves.) Dává to smysl?“

Kompilování programů

Nyní, než budeme moci program hello.c spustit, připomeňme, že jej musíme zkompilovat pomocí překladače (např. clang), který jej převede ze zdrojového kódu do strojového kódu (tj. nul a jedniček). Spusťte následující příkaz, který to udělá:

clang hello.c

A pak tento příkaz spusťte znovu:

ls

Tentokrát byste měli vidět nejen hello.c, ale i a.out v seznamu? (Totéž můžete vidět graficky, pokud znovu kliknete na ikonu této složky.) To proto, že clang přeložil zdrojový kód v hello.c do strojového kódu v a.out, což shodou okolností znamená „výstup assembleru“, ale o tom až jindy.

Teď spusťte program spuštěním níže uvedeného příkazu.

./a.out

Zdravím tě, světe, vskutku!“

Pojmenování programů

No, a.out není zrovna uživatelsky nejpřívětivější název programu. Zkompilujme hello.c znovu, tentokrát uložíme strojový kód do souboru nazvaného výstižněji hello. Spusťte následující příkaz.

clang -o hello hello.c

Dejte pozor, abyste v něm nepřehlédli žádnou z těch mezer! Pak znovu proveďte tento:

ls

Měli byste nyní vidět nejen hello.c (a a.out z předchozího), ale také hello uvedené? To proto, že -o je argument příkazového řádku, někdy známý jako příznak nebo přepínač, který říká clang, aby vypsal (proto o) soubor s názvem hello. Spusťte níže uvedený příkaz a vyzkoušejte nově pojmenovaný program.

./hello

Zdravím vás ještě jednou!

Ulehčení práce

Připomeňme si, že proces spuštění clang můžeme automatizovat a nechat make, aby zjistil, jak to udělat za nás, čímž nám ušetří několik stisků kláves. Spusťte níže uvedený příkaz pro poslední kompilaci tohoto programu.

make hello

Měli byste si všimnout, že make provede clang s ještě více argumenty příkazového řádku za vás? O těch také někdy příště!

Nyní naposledy spusťte samotný program spuštěním níže.

./hello

Uf!“

Získání uživatelského vstupu

Už stačí říci, že ať tento program zkompilujete nebo spustíte jakkoli, vždy vypíše pouze hello, world. Trochu si ho přizpůsobíme, stejně jako jsme to dělali v hodině.

Upravte tento program tak, aby se nejprve zeptal uživatele na jeho jméno a poté vypsal hello, so-and-so, kde so-and-so je jeho skutečné jméno.

Stejně jako předtím nezapomeňte svůj program zkompilovat pomocí:

make hello

A nezapomeňte svůj program spustit a několikrát ho otestovat s různými vstupy pomocí:

./hello

Procházka

Nápovědy

Nevzpomínáte si, jak vyzvat uživatele k zadání jména?

Připomeňte si, že get_string můžete použít následujícím způsobem, přičemž jeho návratovou hodnotu uložíte do proměnné name typu string.

string name = get_string("What is your name?\n");

Nevzpomínáte si, jak formátovat řetězec?

Nevzpomínáte si, jak spojit (tj, spojit) jméno uživatele s pozdravem? Vzpomeňte si, že printf můžete použít nejen k vypsání, ale i k formátování řetězce (proto f v printf), a la níže, kde name je string.

printf("hello, %s\n", name);

Použití nedeklarovaného identifikátoru?

Vidíte níže, možná nahoře další chyby?

error: use of undeclared identifier 'string'; did you mean 'stdin'?

Připomeňte si, že abyste mohli použít get_string, musíte na vrchol souboru zařadit cs50.h (ve kterém je get_string deklarován), jako například:

#include <cs50.h>

Jak otestovat svůj kód

Provedením níže uvedeného vyhodnotíte správnost svého kódu pomocí check50. Nezapomeňte jej však také sami zkompilovat a otestovat!

check50 cs50/problems/2020/x/hello

Vykonejte níže uvedený postup pro vyhodnocení stylu vašeho kódu pomocí style50.

style50 hello.c

Jak odeslat

Vykonejte níže uvedený postup a po výzvě se přihlaste svým uživatelským jménem a heslem GitHub. Kvůli bezpečnosti se místo skutečných znaků v hesle zobrazí hvězdičky (*).

submit50 cs50/problems/2020/x/hello

.

Napsat komentář