GNU/Linux >> Znalost Linux >  >> Linux

Jak na to:Úvod do programování – váš první program

Seriál Jak na to

Toto je 2. část z 5dílné série Úvod do programování

  1. Úvod do programování:Začínáme
  2. Úvod do programování:Váš první program
  3. Úvod do programování:Proměnné, typy a manipulace s daty
  4. Úvod do programování:Řízení toku
  5. Úvod do programování:objektově orientované programování

Jste zpět!

Je skvělé, že vás znovu vidím, a doufám, že jste to pořádně oslavili poté, co jste dokončili první článek z této série na Atlantic.NET, ve kterém jste postavili svůj první program a spustili jej, zatímco jste se dozvěděli, jak se to, co vytváříte, mění z kódu čitelného pro člověka na stroj. pokyny.

Nebojte se, pokud jste tento článek ještě nečetli, můžete tak učinit nyní. Počkám tady, až se vrátíš.

V této části seriálu prozkoumáme tento první program více a zaměříme se na pochopení více konceptů programování a vývoje softwaru. Konkrétně se podíváme na vstup a výstup a představíme vám koncept zvaný objektová orientace a prozkoumejte, jak a proč chceme skrýt složitý kód pomocí abstrakce .

Pojďme na věc, ano?
.

Ponoření se do „Ahoj světe!“

V předchozím článku jsme vytvořili velmi základní „Ahoj světe!“ program sestávající ze dvou řádků kódu, který jsme sami napsali. Byly tam další řádky kódu, ale Visual Studio je vygenerovalo za nás a jsou specifické pro typ programu, který vytváříme, a jazyk, který používáme, takže teď nad nimi netrávme více času.

Dva řádky, které jsme přidali, se však zaměřují konkrétně na výstup a vstup, takže je pojďme prozkoumat blíže.

Console.WriteLine("Hello World!");
Console.ReadLine();

Ignorování Console. (čti:“tečka konzoly”) část řádků, můžete vidět, že stroj dostal pokyn, aby zapsal řádek a pak četl řádek. V konzolovém programu nebo aplikaci, jako je ta, kterou nyní vytváříme, jsou to dva z primárních způsobů interakce s uživatelem; něco vypíšeme na obrazovku konzoly pomocí Console.WriteLine a získat vstup od uživatele pomocí Console.Readline . Výsledek vypadá asi jako na obrázku 1 níže.

Obrázek 1:Výstup konzoly

Tato konzolová aplikace je jen jedním z mnoha typů aplikací, které můžeme vytvořit. Různé typy aplikací vyžadují různé přístupy ke vstupu a výstupu. Pokud vytváříme například jednoduchou webovou stránku, neexistuje žádná konzole, ze které a do které bychom mohli komunikovat s uživatelem. Webová stránka je jen statický kus textu a možná nějaké obrázky. Přestože jej program může generovat, stále není příliš interaktivní, stejně jako interaktivitu vytváříme v konzolové aplikaci.

Poznámka:V počátcích webu existovala metoda nazývaná CGI (Common Gateway Interface), která vám umožňovala umístit konzolové aplikace, jako jsou tyto, přímo na webovou stránku a interagovat s nimi prostřednictvím adresy URL.

.

Příklad kódu webové stránky

Webová stránka má zcela jiný způsob interaktivního chování. Podívejte se například na následující kód webové stránky – a nebojte se, pokud je vám zcela cizí:

<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>

Tato webová stránka jednoduše nabídne uživateli nadpis „Ahoj světe!“ a nic moc jiného, ​​jak je uvedeno níže.

Obrázek 2:Webová stránka Hello World

Tato webová stránka – nebo dokonce jakákoli webová stránka – sama o sobě mnoho nezmůže. Pro vytvoření interaktivity mohou prohlížeče interpretovat příkazy prostřednictvím jazyků, jako je JavaScript, a manipulovat s webovou stránkou různými způsoby, včetně manipulace s rozložením, obsahem a strukturou webové stránky.

Například níže na obrázku 3 používám JavaScript na stránce HTML k zobrazení oznamovacího pole pro uživatele. Všimněte si, že používám Visual Studio k úpravě stránky HTML a také JavaScriptu.

Obrázek 3:Upozornění JavaScriptu na stránce Hello World

Jedním ze způsobů, jak může webová stránka získat informace od uživatele, jsou formuláře webových stránek. Tyto nemusí vypadat jako vaše typické papírové formuláře, ale v tom je krása webu; nemusí to být nudné a přihlouplé, může to vypadat úchvatně a lákavě (ačkoli konfigurace nezbytná k dosažení ohromujícího a lákavého vzhledu je mimo náš rozsah!).

Bez ohledu na vzhled mohou formuláře od uživatele získat konkrétní informace, které pak může prohlížeč někam poslat. Máme-li například někde program, který umí číst vstup z webové stránky, můžeme nechat prohlížeč odeslat obsah formulářů tomuto programu.
.

Programování řízené událostmi

Dalším přístupem je použít data formuláře v kombinaci s JavaScriptem, aby webová stránka sama zpracovávala data od uživatele. Místo toho, aby JavaScript vždy zobrazoval například Hello World, můžeme snadno nechat zobrazit vstup uživatele do formuláře.

Obrázek 4:Dynamické upozornění JavaScript

Zde si s kódem příliš nelámejte hlavu, ale všimněte si, že na rozdíl od naší konzolové aplikace, kde je tok programu obecně řádek po řádku od začátku do konce, na této webové stránce používáme to, co je známé jako event- řízené programování , tím, že kód reaguje na události, které se stanou. Ve výše uvedeném příkladu událost onblur nastane, když se pozornost přesune od vstupního pole, a my můžeme napsat kód, který na tuto událost zareaguje a zobrazí výstrahu.

Bez ohledu na to zde rychle rozpoznáte určitý vzorec, který překračuje hranice platforem, jazyků a rámců. Program začíná tím, že uživateli předloží určitou informaci, a poté uživatel nějakým způsobem odešle programu instrukce. V konzolové aplikaci k této výměně dochází prostřednictvím příkazů jako Console.WriteLine a Console.ReadLine . Na webu k této výměně dochází tak, že se zobrazí HTML stránka a uživatel požádá o vyplnění formuláře.

Jako programátor rychle zjistíte, že to, co děláte jako programátor, je velmi podobné ve všech jazycích, platformách a nástrojích. Syntaxe se může mezi jazyky lišit a můžete mít různé přístupy k tomu, jak přemýšlíte z hlediska toku programu, ale za tím vším je počítač, kterému velíte, stejný. Podléhá stejné logice bez ohledu na to, v jakém jazyce s ním manipulujete.

Jakmile si to uvědomíte, možná budete mít svůj Matrix okamžik, kdy vidíte za kód a do stroje a logiky za ním a najednou plně pochopíte, jak ovládat stroj jakýmkoli způsobem, s použitím jakéhokoli jazyka, jakékoli platformy a jakéhokoli nástroje.

Do té doby je však co učit. Vraťme se na chvíli k našemu programu, protože je tu několik dalších věcí, které vám chci ukázat.
.

Třídy, objekty a metody – Ach, můj!

Začneme částí „Konzolová tečka“ na dvou řádcích.

Console.WriteLine("Hello World!");

Console část je odkaz na statickou třídu zahrnutou jako součást jmenného prostoru System a….

Oh, počkat... To zatím nedává smysl. Nejprve si musím promluvit o třídách a objektech. Asi bych měl hodně mluvit o třídách a objekty , ale nyní se zaměřme na základní pochopení toho, co je to objektová orientace, protože je rozšířená v programovacích jazycích.

Objektová orientace je myšlenka programování, že byste měli vytvářet programové reprezentace objektů skutečného života a poté s těmito objekty interagovat, jako by to byly skutečné věci. Tato definice není příliš přesná, ale zatím nám poslouží dostatečně.

Primárně tuto interakci s objekty provádíme prostřednictvím dvou typů komponent nazývaných vlastnosti a metody . Dobré zprávy? Jeden z nich již používáte:metodu. V našem programu zde WriteLine a ReadLine příkazy jsou metody. Vlastnosti, kterým se v tomto článku nebudeme věnovat, popisují, co je objekt, zatímco metody popisují, co objekt dokáže.

Metody v objektové orientaci jsou připojeny k objektům nebo v některých případech ke třídám. O metodách se dozvíme mnohem více později v této sérii, ale prozatím o metodách uvažujte jako o akcích, které mohou provádět objekty.

Dále si můžete rozdíl mezi třídami a předměty představit jako rozdíl mezi receptem na dort a dortem, přičemž recept je třída a dort je předmět. Třída definuje, jak uděláte předmět, stejně jako recept definuje, jak uděláte dort.

Je poněkud zbytečné mít recept, ale nikdy z něj nic nedělat. Dort naproti tomu bez receptu nemůže existovat. Jako takové existují třídy a objekty, jako jsou recepty a koláče, v souzvuku.

Kde se tato analogie stává trochu složitější, je to, co nazýváme statické třídy . Tyto třídy nebo recepty jsou statické, protože existují jako skutečné věci. Ve skutečnosti z nich ani nemůžete vytvářet objekty; existují pouze jako receptury a mají pouze statické metody. Abychom to ještě více zkomplikovali, můžeme mít na běžných třídách statické metody! Ještě zmatený? Dobře, vzpomeňte si na Douglase Adamse:

Nepropadejte panice!

.
V naší analogii s dortem může být statická metoda pro recept něco, co nesouvisí s dortem samotným, ale také nemusí nutně s receptem. K receptu můžete například připojit statickou metodu nazvanou PointMeToTheKitchen to vám – jsem si jistý, že to dokážete uhodnout – nasměruje do kuchyně. Dort lze upéct v jakékoli kuchyni a recept není závislý na tom, že se v žádné konkrétní kuchyni změní na dort.

Abychom byli spravedliví, lepší – a přesto složitější – situace by byla, kdybyste měli statickou třídu s názvem Baking který zvládá všechny potřebné věci související s pečením pomocí spousty statických metod a že PointMeToTheKitchen metoda by se tam asi hodila lépe. Ve skutečnosti máme stejné využití s ​​naším současným programem.

Takže pro zopakování:
* K vytváření objektů používáte třídy tak, jako používáte recepty k vytváření koláčů.
* Objekty mají metody a vlastnosti, které definují, co mohou dělat a co jsou.
* Třídy mohou mít statické metody, které existují mimo jakýkoli objekt.
* Statické třídy existují mimo všechno a existují samy o sobě. Nemůžete je použít k vytváření objektů.

Ke konci série strávíme mnohem více času s objektovou orientací. Pro tuto chvíli, když zopakuji, že Console část našich dvou řádků je statická třída, víte, že je to třída, která existuje nezávisle na jakémkoli objektu a že obsahuje také statické metody.
.

Odstranění podrobností

Podívejte se znovu na naše řádky:

Console.WriteLine("Hello World!");
Console.ReadLine();

Console je statická třída. Jeho hlavním účelem je poskytnout vám přístup k tomu, co potřebujete pro práci s konzolí, stejně jako Baking třída by vám umožnila přístup k nástrojům na pečení.

Když píšeme tečku v C# a mnoha podobných jazycích, voláme metodu, označenou následujícími závorkami, nebo vlastnost. Ve skutečnosti říkáme:„Ahoj, třído konzoly, dovolte mi spustit váš WriteLine metodu, prosím“.

Poznámka:Některé jazyky mohou používat jiný zápis. Například v C++ můžete použít -> místo tečky v určitých kontextech a Perl 5 používá -> důsledně.

.
Za scénou, Console class pak pomocí parametrů, které poskytneme (doslovný textový řetězec „Ahoj světe!“), zavolá do aktuálního okna konzoly, provede nějaké tajné voodoo a přiměje toto okno konzoly vytisknout text, který jsme mu poslali, doslova „Ahoj světe! “.

Na dalším řádku zavoláme do stejné statické třídy Console znovu a tentokrát jej požádáme, aby zavolal svůj ReadLine metoda. Na oplátku dá program konzoli pokyn, aby počkala, dokud nestiskneme Enter před pokračováním v programu. V našem případě tento vstup dokončí program a pouze se ukončí.

Můžeme se dostat do složitých podrobností o tom, jak konzola funguje, ale v tuto chvíli to není opravdu důležité. Pamatujte, že nejsme tu proto, abychom se učili programování konzole, o nic víc, než abychom se učili C#; učíme se koncepty programování. Jako takové tomu říkám „tajné voodoo“ – i když to tak rozhodně není – jednoduše proto, že je v tomto kontextu pro nás natolik pokročilé, že by to mohlo být také kouzlo.

Co byste však měli vědět, je, že v zákulisí tyto dva jednoduché příkazy ve skutečnosti vykonávají obrovské množství úkolů. Například jen pro interpretaci parametrů, které předáte do WriteLine počítač potřebuje řetězci přiřadit určitou pozici v paměti, načíst tyto znaky do tohoto řetězce a nasměrovat provádění aktuálního programu na toto konkrétní místo v paměti.

CPU pak potřebuje přečíst všechny tyto paměťové bity, zjistit, v jakém kontextu běží, zavolat do operačního systému (který zase bude muset zavolat konkrétní hardware, který máte), aby zapnul nebo vypnul signály. které změní každý pixel na obrazovce na příslušnou hodnotu barvy. A tato malá exkurze není ani zcela přesným nebo úplným znázorněním všeho, co se děje.

Všechny tyto věci se stávají, protože jste do Visual Studia napsali několik znaků a stiskli tlačítko. Toto nahlédnutí za oponu ilustruje další velmi důležitý princip v programování zvaný abstrakce . Stručně řečeno, chceme skrýt složité detaily operace a interagovat s ní pomocí snadno použitelné metody. Pro výstup obsahu do konzole skryjeme všechny ty nejhrubší detaily do metody zvané WriteLine .

Dvě hlavní výhody abstrakce jsou v tom, že můžeme napsat mnohem méně kódu a tím, že nemusíme pokaždé opakovat stejný kód, abychom dosáhli stejných výsledků, píšeme také lepší kód. V zákulisí jsou výsledky, kterých dosahujeme s naším jednoduchým WriteLine a ReadLine kód může trvat stovky řádků kódu. Nutnost napsat celý tento kód značně zvyšuje pravděpodobnost, že uděláte chyby.

Abychom byli přesní, v našem příkladu nám podrobnosti skrývá tým .NET v Microsoftu. Na oplátku nám poskytují značně zjednodušené rozhraní, pomocí kterého můžeme programovat naše aplikace. Trochu zamíchejte slova v této větě a můžete to dokonce nazvat rozhraním pro programování aplikací nebo API.

Jiné rámce mají také API. Například jQuery je rozhraní API, které abstrahuje mnoho hrubých podrobností o tom, jak JavaScript interaguje s obsahem na webové stránce, jako jsou animace, ověřování formulářů, manipulace s obsahem a tak dále. OpenGL je API, které abstrahuje interakci s grafickým hardwarem.

Existují doslova tisíce rozhraní API, která vám umožňují provádět složité činnosti. Atlantic.NET má také API pro správu vašich cloudových serverů, takže jakmile se seznámíte s programováním, můžete vytvářet programy, které spouštějí, vypisují, vytvářejí nebo ukončují instance ve vašem účtu Atlantic.NET.

Poznámka:Rozhraní Atlantic.NET API vyžadují práci s něčím, co se nazývá RESTful rozhraní, což je trochu mimo rámec těchto úvodních článků.

.

Vaše první shrnutí programu

V tomto článku jste se toho museli hodně naučit, ale teď je čas dát si pauzu. Do hloubky jsme probrali, jak funguje vstup a výstup, a dali jsme vám úvod do objektově orientovaného programování. Také jste se dozvěděli o důležitosti abstrakce a o tom, jak nám pomáhá vyvarovat se chyb a zjednodušit psaní kódu. Viděli jste, jak webové stránky a konzolové aplikace používají různé, ale podobné přístupy ke vstupu a výstupu, a alespoň zběžně jste se podívali na zcela odlišný přístup k programování nazývaný událostmi řízené programování.

V příštím článku rozšíříme náš program představením proměnných a datových typů a vy začnete vytvářet velmi jednoduchou hru na hádání pomocí těchto konceptů spolu s tím, co jste se již naučili.

Seriál Jak na to

Toto je 2. část z 5dílné série Úvod do programování

  1. Úvod do programování:Začínáme
  2. Úvod do programování:Váš první program
  3. Úvod do programování:Proměnné, typy a manipulace s daty
  4. Úvod do programování:Řízení toku
  5. Úvod do programování:objektově orientované programování

.


Linux
  1. Programovací jazyk C - Úvod

  2. Debian – Jak stočit celý obsah webové stránky?

  3. Jak získat přístup k přihlašovací stránce Plesk

  1. Jak nasadit svůj první modul na clusteru Kubernetes

  2. Jak napsat a spustit svůj první Qt program v Debianu 10

  3. Jak získat MAC adresu vašeho stroje pomocí programu C?

  1. Jak sdílet svůj terminál na webu pomocí Streamhut

  2. Jak vytvořit svůj první Java program na CentOS 8

  3. Napište svůj první program Apple Swift v Debianu