• Funkce Scanf C: popis. §1 Obecné informace o jazyce. Etapy návrhu programu. Modely životního cyklu aplikace scanf C funkce - popis

    Tyto výukové programy jsou pro každého, ať už s programováním začínáte nebo máte rozsáhlé zkušenosti s programováním v jiných jazycích! Tento materiál je pro ty, kteří se chtějí naučit jazyky C/C++ od úplných základů až po ty nejsložitější struktury.

    C++ je programovací jazyk, znalost tohoto programovacího jazyka vám umožní ovládat váš počítač na té nejvyšší úrovni. V ideálním případě budete moci přimět počítač, aby dělal, co chcete. Naše stránky vám pomohou zvládnout programovací jazyk C++.

    Instalace /IDE

    Úplně první věc, kterou byste měli udělat, než se začnete učit C++, je ujistit se, že máte IDE – integrované vývojové prostředí (program, ve kterém budete programovat). Pokud nemáte IDE, tak tady to je. Jakmile se rozhodnete pro volbu IDE, nainstalujte si jej a procvičte si tvorbu jednoduchých projektů.

    Úvod do C++

    Jazyk C++ je sada příkazů, které říkají počítači, co má dělat. Tato sada příkazů se obvykle nazývá zdrojový kód nebo jednoduše kód. Příkazy jsou buď „funkce“ nebo „klíčová slova“. Klíčová slova (vyhrazená slova C/C++) jsou základními stavebními kameny jazyka. Funkce jsou složité stavební kameny, protože jsou napsány z hlediska jednodušších funkcí – to uvidíte v našem úplně prvním programu, který je zobrazen níže. Tato struktura funkcí připomíná obsah knihy. Obsah může zobrazovat kapitoly knihy, každá kapitola v knize může mít svůj vlastní obsah složený z odstavců, každý odstavec může mít své vlastní pododstavce. Přestože C++ poskytuje mnoho běžných funkcí a vyhrazených slov, která můžete použít, stále je potřeba psát své vlastní funkce.

    V jaké části programu začíná? Každý program v C++ má jednu funkci, nazývá se hlavní nebo hlavní funkce, provádění programu začíná touto funkcí. Z hlavní funkce můžete také volat jakékoli další funkce, ať už jsou to ty, které jsme napsali, nebo, jak již bylo zmíněno dříve, poskytnuté kompilátorem.

    Jak tedy získáte přístup k těmto standardním funkcím? Chcete-li získat přístup ke standardním funkcím, které jsou součástí kompilátoru, musíte zahrnout hlavičkový soubor pomocí direktivy preprocesoru - #include . Proč je to účinné? Podívejme se na příklad fungujícího programu:

    #zahrnout << "Моя первая программа на С++\n"; cin.get(); }

    Pojďme se blíže podívat na prvky programu. #include je direktiva "preprocessor", která říká kompilátoru, aby vložil kód ze souboru záhlaví iostream do našeho programu před vytvořením spustitelného souboru. Zahrnutím hlavičkového souboru do vašeho programu získáte přístup k mnoha různým funkcím, které můžete ve svém programu použít. Například příkaz cout vyžaduje iostream . Řádek používající jmenný prostor std; říká kompilátoru, aby použil skupinu funkcí, které jsou součástí standardní knihovny std. Tento řádek také umožňuje programu používat operátory, jako je cout. Středník je součástí syntaxe C++. Říká kompilátoru, že toto je konec příkazu. O něco později uvidíte, že středník se používá k ukončení většiny příkazů v C++.

    Další důležitý řádek programu je int main() . Tento řádek říká kompilátoru, že existuje funkce s názvem main a že funkce vrací celé číslo. Složené závorky ( a ) signalizují začátek (a konec) funkce. Složené závorky se používají i v jiných blocích kódu, ale vždy označují jednu věc - začátek a konec bloku, resp.

    V C++ se objekt cout používá k zobrazení textu (vyslovuje se "C out"). Používá symboly<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

    Dalším příkazem je cin.get() . Toto je další volání funkce, které čte data ze vstupního datového toku a čeká na stisknutí klávesy ENTER. Tento příkaz zabrání zavření okna konzoly, dokud nestisknete klávesu ENTER. To vám dává čas vidět výstup programu.

    Po dosažení konce hlavní funkce (uzavírací složená závorka) náš program vrátí operačnímu systému hodnotu 0. Tato návratová hodnota je důležitá, protože její analýzou může operační systém posoudit, zda byl náš program úspěšně dokončen nebo ne. Návratová hodnota 0 znamená úspěch a je vrácena automaticky (ale pouze pro datový typ int; ostatní funkce vyžadují ruční vrácení hodnoty), ale pokud bychom chtěli vrátit něco jiného, ​​například 1, museli bychom to udělat ručně.

    #zahrnout pomocí jmenného prostoru std; int main() ( cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

    Chcete-li materiál konsolidovat, zadejte kód programu do svého IDE a spusťte jej. Po spuštění programu a zobrazení výstupu trochu experimentujte s příkazem cout. To vám pomůže zvyknout si na jazyk.

    Nezapomeňte své programy komentovat!

    Přidejte ke kódu komentáře, aby byl přehlednější nejen pro vás, ale i pro ostatní. Kompilátor ignoruje komentáře při provádění kódu, což umožňuje použít libovolný počet komentářů k popisu skutečného kódu. Chcete-li vytvořit komentář, použijte buď // , který kompilátoru řekne, že zbytek řádku je komentář, nebo /* následovaný */ . Když se učíte programovat, je užitečné mít možnost komentovat určité části kódu, abyste viděli, jak se změní výsledek programu. Můžete si přečíst podrobně o technice komentování.

    Co dělat se všemi těmito typy proměnných?

    Někdy může být matoucí mít více typů proměnných, když se zdá, že některé typy proměnných jsou nadbytečné. Je velmi důležité použít správný typ proměnné, protože některé proměnné vyžadují více paměti než jiné. Také kvůli způsobu, jakým jsou čísla s pohyblivou řádovou čárkou uložena v paměti, jsou datové typy float a double "nepřesné" a neměly by se používat, když je třeba uložit přesnou celočíselnou hodnotu.

    Deklarace proměnných v C++

    Chcete-li deklarovat proměnnou, použijte typ syntaxe<имя>; . Zde je několik příkladů deklarací proměnných:

    int num; charakter; float num_float;

    Je povoleno deklarovat několik proměnných stejného typu na jednom řádku, k tomu musí být každá z nich oddělena čárkou.

    int x, y, z, d;

    Pokud jste se podívali pozorně, možná jste viděli, že za deklarací proměnné vždy následuje středník. Můžete se dozvědět více o konvenci „pojmenování proměnných“.

    Časté chyby při deklaraci proměnných v C++

    Pokud se pokusíte použít proměnnou, která není deklarována, váš program se nezkompiluje a zobrazí se chyba. V C++ všechna klíčová slova jazyka, všechny funkce a všechny proměnné rozlišují malá a velká písmena.

    Použití proměnných

    Nyní tedy víte, jak deklarovat proměnnou. Zde je příklad programu demonstrující použití proměnné:

    #zahrnout pomocí jmenného prostoru std; int main() ( int číslo; cout<< "Введите число: "; cin >>číslo; cin.ignore(); cout<< "Вы ввели: "<< number <<"\n"; cin.get(); }

    Pojďme se na tento program podívat a prozkoumat jeho kód řádek po řádku. Klíčové slovo int označuje, že číslo je celé číslo. Funkce cin >> načte hodnotu do čísla, uživatel musí po zadaném čísle stisknout enter. cin.ignore() je funkce, která čte znak a ignoruje ho. Vstup do programu jsme uspořádali, po zadání čísla stiskneme klávesu ENTER, symbol, který se také přenese do vstupního proudu. Nepotřebujeme to, tak to zahazujeme. Mějte na paměti, že proměnná byla deklarována jako celočíselný typ, pokud se uživatel pokusí zadat desetinné číslo, bude zkráceno (to znamená, že desetinná část čísla bude ignorována). Zkuste zadat desetinné číslo nebo posloupnost znaků, při spuštění ukázkového programu bude odpověď záviset na vstupní hodnotě.

    Všimněte si, že při tisku z proměnné se nepoužívají uvozovky. Absence uvozovek říká kompilátoru, že existuje proměnná, a proto by měl program zkontrolovat hodnotu proměnné, aby při spuštění nahradil název proměnné její hodnotou. Více příkazů shift na stejném řádku je naprosto přijatelné a výstup bude proveden ve stejném pořadí. Řetězcové literály (řetězce uzavřené v uvozovkách) a proměnné byste měli oddělit a dát každé vlastní operátor shift<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

    Měnění a porovnávání hodnot

    Samozřejmě, bez ohledu na to, jaký typ dat používáte, proměnné nejsou příliš zajímavé bez možnosti měnit jejich hodnotu. Níže jsou uvedeny některé operátory používané ve spojení s proměnnými:

    • * násobení,
    • - odčítání,
    • + přídavek,
    • / divize,
    • = úkol,
    • == rovnost,
    • > více
    • < меньше.
    • != nerovný
    • >= větší nebo rovno
    • <= меньше или равно

    Operátory, které provádějí matematické funkce, musí být použity napravo od přiřazovacího znaku, aby bylo možné přiřadit výsledek proměnné nalevo.

    Zde jsou nějaké příklady:

    A = 4*6; // použij řádkový komentář a středník, a se rovná 24 a = a + 5; // rovná se součtu původní hodnoty a pěti a == 5 // nepřiřadí pět, zkontroluje, zda se rovná 5 nebo ne

    == budete často používat v konstrukcích, jako jsou podmíněné příkazy a cykly.

    A< 5 // Проверка, a менее пяти? a >5 // Zkontrolujte, je více než pět? a == 5 // Kontrola, je rovno pět? a != 5 // Zkontrolujte, není to rovno pět? a >= 5 // Zkontrolujte, zda a je větší nebo rovno pěti? A<= 5 // Проверка, a меньше или равно пяти?

    Tyto příklady neukazují použití srovnávacích znaků příliš jasně, ale když začneme studovat výběrové operátory, pochopíte, proč je to nutné.

    Standardní knihovna C/C++ obsahuje řadu funkcí pro čtení a zápis do konzole (klávesnice a monitor). Tyto funkce čtou a zapisují data jako jednoduchý proud znaků.

    Pojem proud (stream), používaný v programování, úzce souvisí s obvyklým, každodenním chápáním tohoto slova. Vstupní proud lze porovnat s potrubím, kterým voda (informace) vstupuje do bazénu (paměť počítače), výstupní proud - s potrubím, kterým voda opouští bazén. Důležitou vlastností této roury je, že data se mohou v jednu chvíli pohybovat pouze jedním směrem. I když je pro vstup a výstup použito stejné potrubí, nemůže se to stát současně: pro změnu směru proudění je třeba jej zastavit, provést nějakou akci a teprve poté nasměrovat proudění opačným směrem. Další vlastností potoka je, že téměř nikdy nevysychá. Někdy vyschne, ale toto období nemůže být dlouhé, pokud systém funguje normálně.

    standardní výstupní funkce printf().

    Funkce printf() je standardní výstupní funkcí. Pomocí této funkce můžete na obrazovce monitoru zobrazit řetězec znaků, číslo, hodnotu proměnné...

    Funkce printf() má prototyp ve stdio.h
    int printf(char *řídící řetězec, ...);

    Pokud bude úspěšná, funkce printf() vrátí počet vytištěných znaků.

    Řídicí řádek obsahuje dva typy informací: znaky, které se přímo vytisknou na obrazovku, a specifikátory formátu, které určují způsob tisku argumentů.

    Funkce printf() je formátovaná výstupní funkce. To znamená, že v parametrech funkce je nutné specifikovat formát dat, která budou na výstupu. Formát dat je určen specifikátory formátu. Specifikátor formátu začíná znakem % následovaným kódem formátu.

    Specifikátory formátu:

    %S symbol
    %d celé desetinné číslo
    %i celé desetinné číslo
    %E desetinné číslo ve tvaru x.xx e+xx
    %E desetinné číslo ve tvaru x.xx E+xx
    %F
    %F desetinné číslo s plovoucí desetinnou čárkou xx.xxxx
    %G %f nebo %e, podle toho, co je kratší
    %G %F nebo %E, podle toho, co je kratší
    osmičkové číslo
    %s znakový řetězec
    %u desetinné číslo bez znaménka
    %X hexadecimální číslo
    %X hexadecimální číslo
    %% symbol %
    %p ukazatel
    %n ukazatel

    Kromě toho lze na příkazy formátování použít modifikátory l a h.

    %ld tisknout dlouhé int
    %hu razítko krátké nesignováno
    %Lf dlouhé dvojité razítko

    Ve specifikátoru formátu lze za symbolem % zadat přesnost (počet číslic za desetinnou čárkou). Přesnost je nastavena následovně: %.n<код формата>. kde n je počet číslic za desetinnou čárkou a<код формата>- jeden z výše uvedených kódů.

    Pokud máme například proměnnou x=10.3563 typu float a chceme zobrazit její hodnotu s přesností na 3 desetinná místa, měli bychom napsat:

    printf("Proměnná x = %.3f",x);

    Výsledek:
    Proměnná x = 10,356

    Můžete také určit minimální šířku pole přiděleného pro tisk. Pokud je řádek nebo číslo větší než zadaná šířka pole, vytiskne se celý řádek nebo číslo.

    Pokud například napíšete:

    printf("%5d",20);

    pak výsledek bude následující:
    20

    Upozorňujeme, že číslo 20 nebylo vytištěno od samého začátku řádku. Pokud chcete, aby nevyužité prostory pole byly vyplněny nulami, musíte před šířku pole umístit symbol 0.

    Například:

    printf("%05d",20);

    Výsledek:
    00020

    Kromě specifikátorů formátu dat může řídicí řádek obsahovat řídicí znaky:

    \b BS, dole
    \F Nová stránka, změna stránky
    \n Nový řádek, posun řádku
    \r Návrat vozíku
    \t Horizontální tabulka
    \proti Vertikální záložka
    \" Dvojitá citace
    \" Apostrof
    \\ Obrácené lomítko
    \0 Znak null, bajt null
    \A Signál
    \N Osmičková konstanta
    \xN Hexadecimální konstanta
    \? Otazník

    Nejčastěji budete používat znak \n. S tímto ovládacím znakem můžete přejít na nový řádek. Podívejte se na ukázkové programy a vše pochopíte.

    Příklady programů.

    /* Příklad 1 */
    #zahrnout

    void main (void)
    {
    int a, b, c; // Deklarace proměnných a,b,c
    a=5;
    b=6;
    c=9;
    printf("a=%d, b=%d, c=%d",a,b,c);
    }

    Výsledek programu:
    a=5, b=6, c=9

    /* Příklad 2 */
    #zahrnout

    void main (void)
    {
    plovoucí x,y,z;

    X = 10,5;
    y = 130,67;
    z = 54;

    Printf("Souřadnice objektu: x:%.2f, y:%.2f, z:%.2f", x, y, z);
    }

    Výsledek programu:
    Souřadnice objektu: x:10,50, y:130,67, z:54,00

    /* Příklad 3 */
    #zahrnout

    void main()
    {
    int x;

    X = 5;
    printf("x=%d", x*2);
    }

    Výsledek programu:
    x=10

    /* Příklad 4 */
    #zahrnout

    void main (void)
    {
    printf("\"Text v uvozovkách\"");
    printf("\nObsah kyslíku: 100%%");
    }

    Výsledek programu:
    "Text v uvozovkách"
    Obsah kyslíku: 100%

    /* Příklad 5 */
    #zahrnout

    void main (void)
    {
    int a;

    A = 11; // 11 v desítkové soustavě se rovná b v šestnáctkové soustavě
    printf("a-dec=%d, a-hex=%X",a,a);
    }

    Výsledek programu:
    a-dec=11, a-hex=b

    /* Příklad 6 */
    #zahrnout

    void main (void)
    {
    char ch1,ch2,ch3;

    Ch1="A";
    ch2="B";
    ch3="C";

    Printf("%c%c%c",ch1,ch2,ch3);
    }

    Výsledek programu:
    ABC

    /* Příklad 7 */
    #zahrnout

    void main (void)
    {
    char *str="Můj řetězec.";

    Printf("Toto je %s",str);
    }

    Výsledek programu:
    Toto je Moje linie.

    /* Příklad 8 */
    #zahrnout

    void main (void)
    {
    printf("Ahoj!\n"); // Po vytištění dojde k přechodu na nový řádek - \n
    printf("Jmenuji se Pavel."); // Toto bude vytištěno na novém řádku
    }

    Výsledek programu:
    Ahoj!
    Jmenuji se Pavel.

    Standardní vstupní funkce scanf()

    Funkce scanf() je formátovaná vstupní funkce. S jeho pomocí můžete zadávat data ze standardního vstupního zařízení (klávesnice). Vstupními daty mohou být celá čísla, čísla s plovoucí desetinnou čárkou, znaky, řetězce a ukazatele.

    Funkce scanf() má ve stdio.h následující prototyp:
    int scanf(char *řídící řetězec);

    Funkce vrací počet proměnných, kterým byla přiřazena hodnota.

    Řídicí řetězec obsahuje tři typy znaků: specifikátory formátu, mezery a další znaky. Specifikátory formátu začínají znakem %.

    Specifikátory formátu:

    Při zadávání řetězce pomocí funkce scanf() (specifikátor formátu %s) se řetězec zadává před první mezeru!! těch. pokud zadáte řetězec "Ahoj světe!" pomocí funkce scanf().


    scanf("%s",str);

    pak po zadání výsledného řetězce, který bude uložen v poli str, se bude skládat z jednoho slova „Ahoj“. FUNKCE VSTUPUJE DO ŘETĚZCE PŘED PRVNÍM PROSTOREM! Pokud chcete zadávat řetězce s mezerami, použijte funkci

    char *gets(char *buf);

    Pomocí funkce gets() můžete zadat celé řetězce. Funkce get() čte znaky z klávesnice, dokud se neobjeví znak nového řádku (\n). Samotný znak nového řádku se objeví, když stisknete enter. Funkce vrací ukazatel na buf. buf - buffer (paměť) pro vstupní řetězec.

    Ačkoli get() není tématem tohoto článku, pojďme napsat příklad programu, který vám umožní zadat celý řádek z klávesnice a zobrazit jej na obrazovce.

    #zahrnout

    void main (void)
    {
    char buffer; // pole (buffer) pro vstupní řetězec

    Gets(buffer); // zadejte řádek a stiskněte enter
    printf("%s",buffer); // výstup zadaného řetězce na obrazovku
    }

    Ještě jedna důležitá poznámka! Chcete-li zadat data pomocí funkce scanf(), potřebuje jako parametry předat adresy proměnných, nikoli samotné proměnné. Chcete-li získat adresu proměnné, musíte před název proměnné uvést znak & (ampersand). Znak & znamená převzetí adresy.

    Co znamená adresa? Pokusím se vysvětlit. V programu máme proměnnou. Proměnná ukládá svou hodnotu do paměti počítače. Toto je adresa, kterou získáme pomocí & je adresa v paměti počítače, kde je uložena hodnota proměnné.

    Podívejme se na příklad programu, který nám ukazuje, jak používat &

    #zahrnout

    void main (void)
    {
    int x;

    Printf("Zadejte proměnnou x:");
    scanf("%d",&x);
    printf("Proměnná x=%d",x);
    }

    Nyní se vraťme na řídicí řádek funkce scanf(). Znovu:

    int scanf(char *řídící řetězec);

    Znak mezery v řídicím řetězci přikazuje ve vstupním proudu přeskočit jednu nebo více mezer. Kromě mezery lze vnímat znak tabulátoru nebo nového řádku. Nenulový znak znamená, že znak je přečten a zahozen.

    Oddělovače mezi dvěma zadanými čísly jsou mezera, tabulátor nebo nový řádek. Znak * za % a před kódem formátu (specifikátor formátu) přikazuje, aby byl datový typ načten, ale není přiřazen k této hodnotě.

    Například:

    scanf("%d%*c%d",&i,&j);

    zadání 50+20 nastaví proměnnou i na 50, proměnnou j na 20 a znak + se přečte a ignoruje.

    Příkaz format může určit největší šířku pole, které se má číst.

    Například:

    scanf("%5s",str);

    označuje potřebu přečíst prvních 5 znaků ze vstupního toku. Pokud zadáte 1234567890ABC, pole str bude obsahovat pouze 12345, zbývající znaky budou ignorovány. Oddělovače: mezera, tabulátor a nový řádek – při zadávání symbolu se s nimi zachází jako se všemi ostatními znaky.

    Pokud se v řídicím řetězci vyskytují nějaké další znaky, jsou určeny k identifikaci a přeskočení odpovídajícího znaku. Operátor streamu znaků 10plus20

    scanf("%dplus%d",&x,&y);

    přiřadí hodnotu 10 proměnné x, hodnotu 20 proměnné y a přeskočí znaky plus, protože se vyskytují v řídicím řetězci.

    Jednou z výkonných funkcí funkce scanf() je její schopnost specifikovat sadu skenů. Vyhledávací množina definuje množinu znaků, se kterými budou porovnávány znaky načtené funkcí scanf(). Funkce scanf() čte znaky tak dlouho, dokud se vyskytují ve vyhledávací sadě. Jakmile zadaný znak není ve vyhledávací sadě nalezen, funkce scanf() se přesune k dalšímu specifikátoru formátu. Vyhledávací sada je definována seznamem znaků uzavřených v hranatých závorkách. Znak % se umístí před otevírací závorku. Podívejme se na to na příkladu.

    #zahrnout

    void main (void)
    {
    char str1, str2;
    scanf("%%s", str1, str2);
    printf("\n%s\n%s",str1,str2);
    }
    Zadáme sadu znaků:
    12345abcdefg456

    Program zobrazí na obrazovce:
    12345
    abcdefg456

    Při zadávání vyhledávací sady můžete také použít znak pomlčky k určení mezery a také maximální šířky vstupního pole.

    scanf("%10", str1);

    Můžete také definovat znaky, které nejsou obsaženy ve vyhledávací sadě. Před prvním z těchto znaků je znak ^. Mnoho znaků rozlišuje mezi malými a velkými písmeny.

    Připomínám, že když používáte funkci scanf(), musíte jí jako parametry předat proměnné adresy. Výše uvedený kód byl napsán:

    char str; // pole 80 znaků
    scanf("%s",str);

    Všimněte si, že str nepředchází znak &. To se děje, protože str je pole a název pole - str je ukazatel na první prvek pole. Znak & by se proto neměl používat. Adresu již předáváme funkci scanf(). Jednoduše řečeno, str je adresa v paměti počítače, kde bude uložena hodnota prvního prvku pole.

    Příklady programů.

    Příklad 1
    Tento program zobrazí dotaz "Kolik je vám let?:" a čeká na zadání dat. Pokud například zadáte číslo 20, program zobrazí řádek „Je vám 20 let.“. Při volání funkce scanf() vložíme před proměnnou stáří znak &, protože funkce scanf() potřebuje adresy proměnných. Funkce scanf() zapíše zadanou hodnotu na zadanou adresu. V našem případě se zadaná hodnota 20 zapíše na adresu proměnné věk.

    /* Příklad 1 */

    #zahrnout

    void main (void)
    {
    int věk;

    Printf("\nKolik je ti let?:");
    scanf("%d",&age);
    printf("Je ti %d let.", věk);
    }

    Příklad 2
    Program kalkulačky. Tato kalkulačka umí pouze sčítat čísla. Když zadáte 100+34, program vytvoří výsledek: 100+34=134.

    /* Příklad 2 */

    #zahrnout

    void main (void)
    {
    int x, y;

    Printf("\nKalkulačka:");
    scanf("%d+%d", &x, &y);
    printf("\n%d+%d=%d", x, y, x+y);
    }

    Příklad 3
    Tento příklad ukazuje, jak nastavit šířku čtecího pole. V našem příkladu je šířka pole pět znaků. Pokud zadáte řetězec s velkým počtem znaků, všechny znaky za 5. budou vyřazeny. Všimněte si volání funkce scanf(). Znak & nepředchází název pole, protože název pole je adresou prvního prvku pole.

    /* Příklad 3 */

    #zahrnout

    void main (void)
    {
    název znaku;

    Printf("\nZadejte své uživatelské jméno (ne více než 5 znaků):");
    scanf("%5s", jméno);
    printf("\nZadali jste %s", jméno);
    }

    Příklad 4.
    Poslední příklad v tomto článku ukazuje, jak lze použít vyhledávací sadu. Po spuštění programu zadejte číslo od 2 do 5.

    /* Příklad 4 */

    #zahrnout

    void main (void)
    {
    char bal;

    Printf("Vaše hodnocení je 2,3,4,5:");
    scanf("%", &bal);
    printf("\nHodnocení %c", bal);
    }

    C++ programovací jazyk

    Poslední aktualizace: 28.08.2017

    Programovací jazyk C++ je vysokoúrovňový, staticky typovaný, zkompilovaný, univerzální programovací jazyk, který je vhodný pro vytváření široké škály aplikací. C++ je dnes jedním z nejpopulárnějších a nejrozšířenějších jazyků.

    Má své kořeny v jazyce C, který byl vyvinut v letech 1969-1973 v Bell Labs programátorem Dennisem Ritchiem. Na začátku 80. let dánský programátor Bjarne Stroustrup, tehdy pracující v Bell Labs, vyvinul C++ jako rozšíření jazyka C. Ve skutečnosti na začátku C++ jednoduše doplnil jazyk C o některé možnosti objektově orientovaného programování. A proto to sám Stroustrup zpočátku nazval „C s třídami“.

    Následně si nový jazyk začal získávat na popularitě. Byly do něj přidány nové funkce, které z něj udělaly nejen doplněk k C, ale zcela nový programovací jazyk. V důsledku toho bylo „C s třídami“ přejmenováno na C++. A od té doby se oba jazyky začaly vyvíjet nezávisle na sobě.

    C++ je výkonný jazyk, který zdědí bohaté paměťové schopnosti od jazyka C. Proto C++ často nachází své využití v programování systému, zejména při vytváření operačních systémů, ovladačů, různých utilit, antivirů atd. Mimochodem, OS Windows je většinou napsán v C++. Ale použití tohoto jazyka není omezeno na systémové programování. C++ lze použít v programech jakékoli úrovně, kde je důležitá rychlost a výkon. Často se používá k vytváření grafických aplikací a různých aplikačních programů. Zvláště často se také používá k vytváření her s bohatou a bohatou vizualizací. V poslední době navíc nabírá na síle mobilní směr, kde své uplatnění našlo i C++. A dokonce i ve vývoji webu můžete také použít C++ k vytváření webových aplikací nebo některých podpůrných služeb, které slouží webovým aplikacím. Obecně je C++ široce používaný jazyk, ve kterém můžete vytvořit téměř jakýkoli typ programu.

    C++ je kompilovaný jazyk, což znamená, že kompilátor překládá zdrojový kód C++ do spustitelného souboru, který obsahuje sadu strojových instrukcí. Ale různé platformy mají své vlastní charakteristiky, takže zkompilované programy nelze jednoduše přenést z jedné platformy na druhou a tam běžet. Na úrovni zdrojového kódu jsou však programy C++ z velké části přenosné, pokud nejsou použity některé funkce specifické pro OS. A dostupnost kompilátorů, knihoven a vývojových nástrojů pro téměř všechny běžné platformy umožňuje kompilovat stejný zdrojový kód C++ do aplikací pro tyto platformy.

    Na rozdíl od C vám jazyk C++ umožňuje psát aplikace v objektově orientovaném stylu, který představuje program jako kolekci tříd a objektů, které se vzájemně ovlivňují. Což zjednodušuje tvorbu velkých aplikací.

    Hlavní fáze vývoje

    V letech 1979-80 vyvinul Bjarne Stroustrup rozšíření jazyka C – „C with Classes“. V roce 1983 byl jazyk přejmenován na C++.

    V roce 1985 byla vydána první komerční verze jazyka C++ a také první vydání knihy „Programovací jazyk C++“, která představovala první popis tohoto jazyka při absenci oficiálního standardu.

    V roce 1989 byla vydána nová verze jazyka C++ 2.0, která obsahovala řadu nových funkcí. Poté se jazyk vyvíjel poměrně pomalu až do roku 2011. Ale zároveň v roce 1998 byl učiněn první pokus o standardizaci jazyka organizací ISO (International Organization for Standardization). První norma se jmenovala ISO/IEC 14882:1998, nebo zkráceně C++98. Následně v roce 2003 byla zveřejněna nová verze standardu C++03.

    V roce 2011 byl zveřejněn nový standard C++11, který obsahoval mnoho doplňků a obohatil jazyk C++ o velké množství nových funkcionalit. V návaznosti na to byl v roce 2014 vydán malý doplněk standardu, známý také jako C++14. A další klíčové vydání jazyka je naplánováno na rok 2017.

    Kompilátory a vývojová prostředí

    K vývoji programů v C++ potřebujete kompilátor – ten přeloží zdrojový kód v C++ do spustitelného souboru, který pak můžete spustit. Ale v současné době existuje mnoho různých kompilátorů. Mohou se lišit v různých aspektech, zejména v implementaci norem. Základní seznam kompilátorů pro C++ lze nalézt na Wikipedii. Pro vývoj se doporučuje vybrat ty kompilátory, které vyvíjejí a implementují všechny nejnovější standardy. V tomto tutoriálu tedy budeme primárně používat volně dostupný kompilátor g++ vyvinutý projektem GNU.

    K vytváření programů můžete také použít IDE jako Visual Studio, Netbeans, Eclipse, Qt atd.

    1. Úvod

    Programování vyžaduje nové univerzální algoritmické modely a hardware implementuje algoritmy nejen v jiné podobě, ale také na základě jiného algoritmického modelu - automatů. Půjčování technologií z vývoje hardwaru je klíčovou myšlenkou programování automatů. Syntéza digitálního zařízení se však od programování liší. Ale při zapůjčení modelu na jedné straně není radno jej výrazně měnit a na druhé straně nelze ignorovat již existující teorii a praxi programování.

    Dále se podíváme na technologii SWITCH pro navrhování automatových programů, ve kterých se s podobnými procesy setkáváte neustále. Na jedné straně změnil model konečného automatu tak, že jej vlastně vytrhl z rámce teorie automatů. A na druhou stranu vnáší do programování pojmy, které programátoři jen stěží vnímají a někdy jsou prostě nadbytečné, protože existují známější analogie z teorie programů a praxe programování.

    Jako základ pro diskusi o problémech automatického programování bereme nedávnou přednášku Shalyto A.A. a jeho „softwarové“ dokumenty k definici paradigmatu programování automatů.

    C++ (vyslovováno c-plus-plus) je zkompilovaný, staticky typovaný, univerzální programovací jazyk, který lze použít k vytváření programů jakékoli úrovně složitosti.
    Již více než 20 let patří tento jazyk mezi tři nejoblíbenější a nejžádanější programovací jazyky. (Můžete si to ověřit na webových stránkách TIOBE).
    Jazyk vznikl na počátku 80. let, kdy zaměstnanec Bell Labs Björn Stroustrup přišel s řadou vylepšení jazyka C pro vlastní potřeby.

    Bjarne Stroustrup – tvůrce jazyka C++

    Stroustrup se rozhodl rozšířit jazyk C o možnosti nalezené v jazyce Simula. C, což je základní jazyk systému UNIX, na kterém počítače Bell běžely, je rychlý, bohatý na funkce a přenosný. Stroustrup přidal možnost pracovat s třídami a objekty. Ve výsledku se ukázalo, že praktické problémy modelování jsou snadno řešitelné jak z hlediska doby vývoje (díky použití tříd podobných Simula), tak z hlediska doby výpočtu (díky rychlosti C).
    Zde je návod, jak o tom mluví sám vývojář jazyka:



    V roce 1998 byl výborem pro standardy publikován první jazykový standard, známý jako C++98. C++ se neustále vyvíjí, aby vyhovoval dnešním požadavkům. Jednou ze skupin, které vyvíjejí jazyk C++ a předkládají návrhy na jeho vylepšení Výboru pro standardy C++, je Posílit, která se mimo jiné zabývá vylepšováním schopností jazyka přidáním funkcí metaprogramování. Nejnovější standard byl vydán v roce 2017 a jmenuje se C++17. Další standard na sebe nenechá dlouho čekat a očekává se, že se objeví v roce 2020.
    Nikdo nevlastní práva na jazyk C++, je zdarma. V březnu 2016 byla v Rusku vytvořena pracovní skupina WP21 C++. Skupina byla zorganizována s cílem shromáždit návrhy standardu C++, poslat je výboru a obhájit je na valných hromadách Mezinárodní organizace pro standardizaci.
    C++ je multiparadigmatický jazyk (od slova paradigma – styl psaní počítačových programů), zahrnující širokou škálu různých programovacích stylů a technologií. Často je klasifikován jako objektově orientovaný jazyk, ale přísně vzato tomu tak není. Vývojář dostává během pracovního procesu absolutní volnost ve výběru nástrojů tak, aby problém řešený konkrétním přístupem byl vyřešen co nejefektivněji. Jinými slovy, C++ nenutí programátora dodržovat pouze jeden styl vývoje programu (například objektově orientovaný).
    C++ má bohatou standardní knihovnu, která obsahuje běžné kontejnery a algoritmy, I/O, regulární výrazy, podporu multithreadingu a další. C++ ovlivnil mnoho programovacích jazyků, včetně: Java, C#, D. Protože C++ patří do rodiny jazyků založených na syntaxi jazyka C, lze snadno zvládnout i další programovací jazyky této rodiny: JavaScript , PHP, Perl, Objective-C a mnoho dalších. . atd., včetně samotného mateřského jazyka - C. ()
    Za dobu své existence se v jazyce C++ zakořenily stabilní mýty, které lze snadno vyvrátit (viz zde: 1. díl a 2. díl)

    Historie vydání jazyka a norem

    1983

    Tvůrcem jazyka je Björn Stroustrup, zaměstnanec Bell Labs, představil ranou verzi jazyka C++ („C s třídami“)

    1985

    První komerční verze C++, jazyk přebírá své moderní jméno

    1986

    Vydání prvního vydání The C++ Programming Language, knihy C++, kterou napsal Bjorn Stroustrup

    1998

    Mezinárodní jazykový standard C++ byl ratifikován: ISO/IEC 14882:1998 „Standard pro programovací jazyk C++“

    2003
    2005

    Byla vydána technická zpráva knihovny 1 (TR1). Ačkoli to není oficiálně součástí standardu, zpráva popisovala rozšíření standardní knihovny, která by měla být zahrnuta v příští verzi jazyka C++.

    2011

    Vydání nového standardu – C++11 nebo ISO/IEC 14882:2011; nový standard zahrnoval dodatky k jádru jazyka a rozšíření standardní knihovny, včetně velké části TR1

    2014

    Vydání standardu C++14 („Mezinárodní standard ISO/IEC 14882:2014(E) Programovací jazyk C++“); C++14 lze považovat za malé rozšíření oproti C++11, které obsahuje většinou opravy chyb a drobná vylepšení

    2017

    Vydání nového standardu – C++1z (C++17). Tato norma přinesla mnoho změn a doplňků. Například STD zahrnoval knihovny standardu C11, souborový systém založený na boost::filesystem, a většinu experimentální knihovny TS I.

    2020

    C++20 je neoficiální název normy ISO/IEC pro programovací jazyk C++, od kterého se očekává, že bude následovat po C++17. Návrh normy N4800.

    Filozofie C++

    Björn Stroustrup ve své knize The Design and Evolution of C++ (2007) popisuje principy, kterými se řídil při navrhování C++ (zkráceně):

    • Získejte univerzální jazyk se statickými datovými typy, efektivitou a přenositelností jazyka C.
    • Přímo a komplexně podporuje různé styly programování.
    • Dejte programátorovi svobodu volby, i když mu to dává možnost vybrat si špatně.
    • Zachovejte maximální kompatibilitu s C, čímž umožníte snadný přechod z programování v C.
    • Vyhněte se nesrovnalostem mezi C a C++: jakákoli konstrukce, která je platná v obou jazycích, musí v každém z nich znamenat totéž a vést ke stejnému chování programu.
    • Vyhněte se funkcím, které jsou závislé na platformě nebo nejsou univerzální.
    • „Neplaťte za to, co nepoužíváte“ – žádná jazyková funkce by neměla vést ke snížení výkonu programů, které ji nepoužívají.
    • Nevyžadují příliš složité programovací prostředí.

    C a C++

    Syntaxe C++ je zděděna z jazyka C. Ačkoli formálně jedním z principů C++ zůstává zachování kompatibility s jazykem C, ve skutečnosti standardizační skupiny pro tyto jazyky neinteragují a změny, které provádějí, pouze nekorelují, ale často si ideově zásadně odporují. Prvky, které nové standardy C přidávají do jádra, jsou tedy ve standardních prvcích C++ standardní knihovny a nejsou v jádře vůbec, například dynamická pole, pole s pevnými hranicemi, zařízení pro paralelní zpracování. Podle Stroustrupa by spojení vývoje těchto dvou jazyků bylo velkým přínosem, ale je nepravděpodobné, že by to bylo možné z politických důvodů. Takže praktická kompatibilita mezi C a C++ se postupně ztratí.
    V tomto příkladu, v závislosti na použitém kompilátoru, bude výstup „C++“ nebo „C“:

    Program 9.1

    #zahrnout int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

    To je způsobeno skutečností, že znakové konstanty v C jsou typu int a v C++ jsou typu char, ale velikosti těchto typů jsou různé.

    Modely životního cyklu aplikací

    Životní cyklus software je časový úsek, který začíná okamžikem rozhodnutí o nutnosti vytvořit softwarový produkt a končí okamžikem jeho úplného vyřazení z provozu. Tento cyklus je proces budování a vývoje softwaru. Existuje několik modelů životního cyklu.
    Kaskádový modelživotní cyklus (anglický model vodopádu) navrhl v roce 1970 Winston Royce. Zajišťuje sekvenční realizaci všech fází projektu v přesně stanoveném pořadí. Přechod do další fáze znamená úplné dokončení práce v předchozí fázi. Požadavky stanovené ve fázi tvorby požadavků jsou přísně dokumentovány ve formě technických specifikací a jsou evidovány pro celý vývoj projektu. Každá fáze vyvrcholí vydáním kompletní sady dokumentace dostatečné k tomu, aby ve vývoji mohl pokračovat další vývojový tým.
    Fáze projektu podle vodopádového modelu:

    1. Tvorba požadavků;
    2. Design;
    3. Implementace;
    4. Testování;
    5. implementace;
    6. Provoz a údržba.

    V kaskádovém modelu přechod z jedné projektové fáze do druhé předpokládá, že výsledek předchozí fáze je zcela správný. U velkých projektů je toho téměř nemožné dosáhnout. Proto je tento model vhodný pouze pro vývoj malého projektu. (W. Royce sám se tohoto modelu nedržel a použil iterativní model).
    Iterativní model
    Alternativou k vodopádovému modelu je model iterativního a přírůstkového vývoje (IID), který obdržel od T. Gilba v 70. letech. název evolučního modelu. Model IID rozděluje životní cyklus projektu na řadu iterací, z nichž každá připomíná „miniprojekt“, včetně všech vývojových procesů použitých při vytváření menších částí funkcionality ve srovnání s projektem jako celkem. Cílem každé iterace je získat funkční verzi softwarového systému včetně funkčnosti definované integrovaným obsahem všech předchozích i současných iterací. Výsledek konečné iterace obsahuje veškerou požadovanou funkčnost produktu. S dokončením každé iterace tedy produkt dostává přírůstek – přírůstek – ke svým schopnostem, které se tedy evolučně vyvíjejí.


    Ve většině moderních vývojových metodologií jsou implementovány různé varianty iterativního přístupu:

    Vývojový proces – Rational Unified Process (RUP)

    Rational Unified Process (RUP)(racionální jednotný proces) je metodika vývoje softwaru spravovaná společností Rational Software (IBM). Metodika poskytuje doporučení pro všechny fáze vývoje: od obchodního modelování až po testování a uvedení hotového programu do provozu. Jako modelovací jazyk se používá Unified Modeling Language (UML).
    Kompletní životní cyklus vývoje produktu se skládá ze čtyř fází, z nichž každá zahrnuje jednu nebo více iterací.

    • Počáteční fáze (začátek)
    • Stanovení rozsahu projektu a množství požadovaných zdrojů. Jsou stanoveny základní požadavky, omezení a klíčová funkčnost produktu. Rizika se vyhodnocují. Plánování akcí. Na konci počáteční fáze se posuzuje dosažení milníku cíle životního cyklu, což předpokládá dohodu mezi zúčastněnými stranami o pokračování projektu.

    • Zpracování
    • Požadavky na dokumentaci. Návrh, implementace a testování spustitelné architektury. Vyjasnění podmínek a nákladů. Snížení hlavních rizik. Úspěšné dokončení vývojové fáze znamená dosažení milníku architektury životního cyklu.

    • Konstrukce
    • Ve fázi „Build“ je implementována většina funkcí produktu: je dokončen návrh aplikace, je napsán zdrojový kód. Fáze Build končí prvním externím vydáním systému a milníkem Initial Operational Capability.

    • Implementace (přechod)
    • Ve fázi „Implementace“ se vytvoří finální verze produktu, která se přenese od vývojáře k zákazníkovi. To zahrnuje beta testovací program, školení uživatelů a stanovení kvality produktu. V případě, že kvalita nesplňuje očekávání uživatelů nebo kritéria stanovená ve fázi Start, fáze Implementace se znovu opakuje. Splnění všech cílů znamená dosažení milníku hotového produktu (Product Release) a dokončení celého vývojového cyklu.



    "Informační technologie. Systémové a softwarové inženýrství. Procesy životního cyklu softwaru“. Tato norma byla přijata Federální agenturou pro technickou regulaci a metrologii Ruské federace a je podobná mezinárodní normě ISO/IEC 12207:2008. Tato norma vytváří obecný rámec pro procesy životního cyklu softwaru, který lze použít jako vodítko v softwarovém průmyslu. Norma nenavrhuje konkrétní model životního cyklu. Jeho ustanovení jsou společná pro všechny modely životního cyklu, metody a technologie pro tvorbu softwaru. Popisuje strukturu procesů životního cyklu, aniž by specifikoval, jak implementovat nebo vykonávat činnosti a úkoly zahrnuté v těchto procesech.

    Prezentace na lekci
    Témata zpráv
    • Free Software Foundation (FSF)
    • Licence svobodného softwaru
    • FreeSoftware a Open Source
    • Historie vývoje programovacích jazyků
    • Historie jazyka C. C a C++
    • Příběh
    • Kritika C++
    • Historie UNIXu
    • Spirálový model životního cyklu softwaru
    • UML (Unified Modeling Language)
    • Microsoft Solutions Framework
    • IDE pro programování v C/C++ na Windows
    • C/C++ kompilátory
    • Vytvoření konzolové aplikace v systému Windows
    Otázky
    1. Proč se vodopádový model vývoje softwaru nepoužívá ve velkých projektech?
    2. Jaký je rozdíl mezi vodopádovými a iterativními modely vývoje?
    3. Vyjmenujte fáze vývoje softwaru v metodice Rational Unified Process (RUP).