Obsah
- konzultace
- v čem budeme programovat
- vytvoření nového C# projektu
- ReCodEx
- procvičování
- přístup k souborům na školních počítačích
Dotazy a konzultace
Pokud vám něco, co říkám, nebude jasné, ptejte se. Ideálně hned, dokud je to aktuální. Je velmi pravděpodobné, že v učebně sedí několik dalších lidí s úplně stejným dotazem, ale bojí se zeptat. Nebojte se. Cvičení je pro vás. Cílem je, abyste látku pochopili, ne abych ji já jen zbytečně odvykládal.
Pokud se stydíte zeptat, nebo je váš dotaz moc dlouhý či kontroverzní, můžete se zeptat po skončení cvičení. V tomto čase většina ostatních studentů už odejde a zůstanou jen ti, kteří se mnou chtějí něco řešit.
Pokud by někdo chtěl něco dovysvětlit nebo se mu nedařilo a chtěl by probrat cokoliv jiného, napište mi email a domluvíme se na termínu konzultace.
V čem budeme programovat a jak to nainstaluju
Já budu na cvičení používat Visual Studio Code, které jsme používali v zimním semestru (a na rozdíl od Visual Studia, které se používá na přednáškách, jde spustit i na jiných platformách než Windows). Taky nesmím zapomenout na prostředí Rider od JetBrains, které můžete jako studenti používat zdarma, nicméně není v labu nainstalované. Pokud už máte nainstalovaný nebo oblíbený jiný editor (Atom, Sublime, …), problém s tím nemám.
Na počítačích v učebně jsou všechny potřebné nástroje už nainstalované.
Dokumentace C#
V dokumentaci k C# najdete popis tříd a metod ze standardní knihovny, které se vám při programování můžou hodit.
Instalace VS Code
- Nainstalujte si Visual Studio Code.
- Přidejte si do VS Code rozšíření C# Dev Kit (rozšíření se do VS Code přidávají v levém panelu v ikoně Extensions nebo přes odkaz z webového prohlížeče).
- Automaticky by se měl nainstalovat i .NET. Můžete to ověřit spuštěním příkazu
dotnet --versionv terminálu (možná bude nutné před tím restartovat VS Code). Pokud nefunguje, můžete .NET nainstalovat ručně.
- Automaticky by se měl nainstalovat i .NET. Můžete to ověřit spuštěním příkazu
Stejné pokyny v angličtině najdete taky v dokumentaci VS Code. Pro vývoj budeme používat .NET Core, postup vytvoření nového projektu najdete níže, ukážeme si ho na cvičení nebo ho najdete v dokumentaci VS Code.
Vytvoření nového projektu
Nejjednodušší je použít příkaz dotnet na příkazové řádce.
- Vytvořte složku, ve které chcete projekt mít, a přejděte do ní v terminálu.
- Spusťte
dotnet new console. To vám vyrobíProgram.cs, který můžete editovat a spustit. Pokud chcete program odevzdávat do ReCodExu, věnujte pozornost rámečku níže. - Hodí se mít VS Code otevřený ve složce projektu, to se udělá snadno spuštěním
code .(včetně tečky), což otevře VS Code v aktuální složce. - Pro spuštění a ladění programu postupujte takto:
- otevřete
Program.cs - stiskněte
F5(případně v menu zvolte Run -> Start debugging nebo klikněte na šipku v pravé části horního panelu) - vyberte možnost
C#(nebo případněMore C# options...) - zvolte
C#: <jméno vašeho projektu>(nebo případněC#: Launch Startup Project)
- otevřete
Pokud byste program potřebovali spustit z příkazové řádky, použijte dotnet run.
Také je možnost vytvořit projekt pomocí grafického rozhraní VS Code, návod najdete třeba tady.
Poznámka ke vstupu a výstupu
Pokud vám nefunguje nebo nevyhovuje čtení vstupu přes okno Debug Console, můžete VS Code nastavit, aby četl vstup z terminálu (jako to bylo v Pythonu v ZS). Otevřete si nastavení, vyhledejte csharp.debug.console a změňte Csharp › Debug: Console z internalConsole na integratedTerminal.
Poznámka ke starší verzi C# rozšíření
Kromě C# Dev Kit existuje také starší rozšíření C# s méně funkcemi (nicméně pro Programování 2 úplně dostačuje).
Pokud používáte to, je potřeba pro ladění vytvořit konfiguraci. Když je VS Code otevřený přímo ve složce projektu, umí sám vygenerovat soubory potřebné pro spuštění projektu. Stačí na kartě Run and Debug kliknout na Generate C# Assets for Build and Debug. Pokud tlačítko nevidíte, můžete zkusit spustit příkaz ručně (pomocí Ctrl+Shift+P): .NET: Generate Assets for Build and Debug.
Pro vstup a výstup z terminálu je potřeba ve vygenerovaném souboru .vscode/launch.json změnit řádek "console": "internalConsole", na "console": "integratedTerminal",.
ReCodEx a C#
V ReCodExu nefungují top-level statements (program bez Main metody). Aby program v ReCodExu fungoval, musíte založit projekt s Main metodou pomocí příkazu dotnet new console --use-program-main (v kroku 2 výše). Pokud projekt vytváříte přes grafické rozhraní, zaškrtněte možnost Do not use top-level statements (ve VS Code je schovaná pod Show all template options). Váš kód pak můžete psát dovnitř Main.
Pokud už jste projekt vytvořili bez Main metody a něco naprogramovali, tak to nevadí. Nejjednodušší řešení je ve VS Code použít klávesovou zkratku Ctrl+. a z nabídky vybrat Convert to ‘Program.Main’ style program. Tím se vám metoda Main automaticky vytvoří a všechen váš kód se do ní přesune, takže by měl nadále fungovat.
ReCodEx
Domácí úkoly budou zadávány a odevzdávány pomocí systému ReCodEx.
Jak rozchodit ReCodEx:
- Jděte na https://recodex.mff.cuni.cz/login.
- V sekci Přihlásit se pomocí externí služby klikněte na Ověřit uživatele.
- Přihlaste se pomocí Centrální Autentizační Služby (CAS CUNI). Jméno a heslo jsou stejné jako do SISu.
- V menu vlevo dole je položka SIS Integrace. Tam se přidejte do skupin Programování 2 (dvě skupiny – jedna na domácí úkoly a jedna na práci na cvičeních).
Pokud vám něco nefunguje, zkuste se podívat na FAQ ReCodExu, případně mi napište email.
Chci se procvičovat doma a nevím jak
Středoškolská soutěž Kasiopea má archiv domácích kol, kde se obtížnost úloh stupňuje od velmi lehkých k velmi náročným.
Korespondenční seminář z programování má online k dispozici nejen úlohy, ale i kuchařky vysvětlující nejrůznější oblasti algoritmizace, diskrétní matematiky a spousty dalších užitečných oblastí. Lehčí úlohy najdete v začátečnické kategorii.
Průvodce labyrintem algoritmů je kniha (dostupná online) shrnující látku předmětů Algoritmizace, Algoritmy a datové struktury I a Algoritmy a datové struktury II. Její úvodní kapitoly rozebírají paměťovou a časovou složitost, binární vyhledávání, Euklidův algoritmus, třídění, haldy apod.
Přístup k souborům na školních počítačích
Pokud pracujete na školních počítačích a chtěli byste k vytvořeným souborům mít přístup i z domova, jde to poměrně snadno – stačí je uložit na AFS:
- na Windows ukládejte soubory na disk
Z:(měl by se připojit automaticky po přihlášení; pokud ho nevidíte, spusťte skriptsshfslogin, který je na ploše), - na Linuxu do svého domovského adresáře.
Z domova pak k AFS můžete přistupovat pomocí vzdáleného přístupu k počítačům v laboratoři Rotunda (co dalšího s nimi můžete dělat se dozvíte zde):
- na Windows třeba pomocí WinSCP
- vytvořte si Nové spojení (New Connection), protokol: SFTP, hostitel (host):
u-pl0.ms.mff.cuni.cz, jméno a heslo jako do SISu
- vytvořte si Nové spojení (New Connection), protokol: SFTP, hostitel (host):
- na Linuxu se můžete připojit pomocí SSH:
ssh LOGIN@u-pl0.ms.mff.cuni.cz(místoLOGINdejte vaše přihlašovací jméno), kopírovat soubory můžete třeba pomocí SCP.
Git
V této sekci je popsáno řešení dvou častých problémů, které se objevují při používání Gitu během práce na zápočtovém programu (zejména při odevzdávání).
Problémy s .gitignore
Pokud jste zapomněli na začátku vytvořit soubor .gitignore (nebo jste ho zapomněli přejmenovat z VisualStudio.gitignore na .gitignore), nestačí soubor pouze vytvořit. Git totiž nezačne ignorovat ty soubory, které už byly dříve commitnuté. Řešení je naštěstí jednoduché, po vytvoření .gitignore spusťte ve vašem repozitáři následující dva příkazy (více viz https://stackoverflow.com/q/1274057):
git rm -r --cached .
git add .a pak změny commitnout, např.:
git commit -m "Remove newly ignored files"Jak nahrát program na GitLab, pokud ho už mám v jiném repozitáři
Pokud už program máte jako Gitový repozitář (třeba na GitHubu), je poměrně snadné nahrát ho na GitLab do předpřipraveného repozitáře pro váš zápočtový program. Stačí si v naklonovaném repozitáři na vašem počítači přidat další remote a pak na něj pomocí push kód nahrát. Přidání remote pojmenovaného gitlab se dá udělat takto (více zde): git remote add gitlab https://gitlab.mff.cuni.cz/teaching/nprg031/ROK-SEMESTR/student-LOGIN_DO_SISU.git (URL adresu změňte na váš předpřipravený repozitář). A pak můžete pomocí git push gitlab master nahrát kód z větve master (výchozí jméno větve) na remote jménem gitlab. Pokud by push nefungoval (protože předpřipravený repozitář už nějaký kód obsahuje), můžete přidat možnost --force, čímž vynutíte přepsání vzdáleného kódu tím vaším.