1. Úvod

Programovanie potrebuje nové univerzálne algoritmické modely a hardvér implementuje algoritmy nielen v inej forme, ale aj na základe iného algoritmického modelu - automatu. Požičiavanie si technológie z vývoja hardvéru je kľúčovou myšlienkou automatického programovania. Avšak, syntéza digitálnych zariadení odlišné od programovania. Požičiavaním modelu však na jednej strane nie je žiaduce ho výrazne meniť a na druhej strane nemožno nebrať do úvahy už existujúcu teóriu a prax programovania.

Ďalej zvážime technológiu SWITCH na navrhovanie automatických programov, v ktorých sa neustále stretávate s podobnými procesmi. Na jednej strane tak zmenila modelku štátny automat, ktorý to vlastne prekročil rámec teórie automatov. A na druhej strane zavádza do programovania koncepty, ktoré programátori len ťažko vnímajú a niekedy sú jednoducho nadbytočné, pretože existujú známejšie analógie z teórie programov az praxe programovania.

Ako základ pre diskusiu o problémoch automatického programovania berieme nedávnu prednášku Shalyto A.A. a jeho „softvérové“ články k definícii paradigmy programovania automatov.

C++ (vyslovuje sa c-plus-plus) je skompilovaný, staticky typovaný, univerzálny programovací jazyk, ktorý možno použiť na vytváranie programov akejkoľvek úrovne zložitosti.
Už viac ako 20 rokov patrí tento jazyk medzi tri najpopulárnejšie a najžiadanejšie programovacie jazyky. (To je možné overiť návštevou webovej stránky TIOBE).
Jazyk vznikol začiatkom 80. rokov, keď zamestnanec Bell Labs Björn Stroustrup prišiel s množstvom vylepšení jazyka C pre svoje potreby.

Bjarne Stroustrup - tvorca jazyka C++

Stroustrup sa rozhodol rozšíriť jazyk C o funkcie dostupné v jazyku Simula. Jazyk C, ktorý je základným jazykom systému UNIX, na ktorom bežali počítače Bell, je rýchly, bohatý na funkcie a prenosný. Stroustrup k tomu pridal schopnosť pracovať s triedami a objektmi. Výsledkom bolo, že praktické problémy modelovania sa ukázali byť dostupné z hľadiska času vývoja (kvôli použitiu tried podobných Simule) aj z hľadiska výpočtového času (kvôli rýchlosti C).
Takto to hovorí samotný vývojár jazyka:



V roku 1998 výbor pre štandardy zverejnil prvý jazykový štandard známy ako C++98. C++ sa neustále vyvíja, aby spĺňal moderné požiadavky. Jedna zo skupín, ktorá vyvíja jazyk C++ a posiela normalizačnému výboru C++ návrhy na jeho zlepšenie, je Zosilnenie, ktorá sa okrem iného zaoberá zlepšovaním schopností jazyka pridávaním metaprogramovacích funkcií. Najnovší štandard bol vydaný v roku 2017 a volá sa C++17. Ďalší štandard na seba nenechá dlho čakať a očakáva sa, že sa objaví v roku 2020.
Nikto nevlastní práva na jazyk C++, je zadarmo. V marci 2016 založilo Rusko pracovná skupina WG21 C++. Skupina bola zorganizovaná s cieľom zozbierať návrhy pre štandard C++, predložiť ich výboru a obhájiť ich na valných zhromaždeniach Medzinárodnej organizácie pre normalizáciu.
C++ je multiparadigmový jazyk (od slova paradigma - štýl písania počítačové programy), ktorý zahŕňa širokú škálu rôznych programovacích štýlov a technológií. Často sa o ňom hovorí ako o objektovo orientovanom jazyku, ale striktne povedané, nie je to tak. V procese práce dostane vývojár absolútnu voľnosť pri výbere nástrojov tak, aby problém riešený jedným alebo druhým prístupom bol vyriešený čo najefektívnejšie. Inými slovami, C++ nenúti programátora dodržiavať len jeden štýl vývoja programu (napríklad objektovo orientovaný).
C++ má bohatú štandardnú knižnicu, ktorá obsahuje bežné kontajnery a algoritmy, I/O, regulárne výrazy, podpora multithreadingu a ďalšie funkcie. C++ ovplyvnil mnoho programovacích jazykov vrátane: Java, C#, D. Keďže C++ patrí do rodiny jazykov založených na syntaxi jazyka C, dajú sa ľahko zvládnuť aj iné programovacie jazyky z tejto rodiny: JavaScript , PHP, Perl, Objective-C a mnoho ďalších. . atď., vrátane samotného materského jazyka - C. ()
Počas svojej existencie sa v jazyku C ++ zakorenili stabilné mýty, ktoré sa dajú ľahko vyvrátiť (pozri tu: 1. časť a 2. časť)

História jazyka a vydanie noriem

1983

Tvorca jazyka - Bjorn Stroustrup, v Bell Labs, predstavil skorú verziu C++ („C with Classes“)

1985

Prvé komerčné vydanie C++, jazyk preberá moderný názov

1986

Vydanie prvého vydania The C++ Programming Language, knihy C++, ktorú napísal Bjorn Stroustrup

1998

Bola ratifikovaná medzinárodná jazyková norma C++: ISO/IEC 14882:1998 „Štandard pre programovací jazyk C++“

2003
2005

Vydaná technická správa knižnice 1 (TR1). Hoci to nie je oficiálne súčasťou štandardu, správa popisovala rozšírenia štandardnej knižnice, ktoré by mali byť zahrnuté ďalšia verzia jazyk C++

2011

Vydanie nového štandardu - C++11 alebo ISO/IEC 14882:2011; nový štandard zahŕňal doplnky k jadru jazyka a rozšírenie štandardnej knižnice, vrátane veľkej časti TR1

2014

Vydanie normy C++14 („Medzinárodná norma ISO/IEC 14882:2014(E) Programovací jazyk C++“); C++14 možno považovať za malé rozšírenie C++11, ktoré obsahuje väčšinou opravy chýb a menšie vylepšenia.

2017

Vydanie nového štandardu je C++1z (C++17). Táto norma priniesla mnoho zmien a doplnkov. Napríklad STD zahŕňala štandardné knižnice C11, systém súborov, založený na boost::filesystem, veľkej časti experimentálnej knižnice TS I.

2020

C++20 je neformálny názov normy ISO/IEC pre programovací jazyk C++, ktorý sa očakáva po C++17. Návrh normy N4800.

Filozofia C++

Bjorn Stroustrup v knihe The Design and Evolution of C++ (2007) opisuje princípy, ktorými sa riadil pri navrhovaní C++ (uvedené v skrátenej forme):

  • Získajte univerzálny jazyk so statickými dátovými typmi, efektívnosťou a prenosnosťou C.
  • Priama a komplexná podpora rôznych štýlov programovania.
  • Dajte programátorovi slobodu voľby, aj keď mu to dáva možnosť vybrať si nesprávne.
  • Udržujte kompatibilitu s C čo najviac, čím umožníte jednoduchý prechod z programovania na C.
  • Vyhnite sa nezrovnalostiam medzi C a C++: každá konštrukcia, ktorá je platná v oboch jazykoch, musí znamenať to isté v každom z nich a viesť k rovnakému správaniu programu.
  • Vyhnite sa funkciám, ktoré sú závislé od platformy alebo nie sú univerzálne.
  • „Neplaťte za to, čo nepoužívate“ – Žiadna jazyková funkcia by nemala spôsobiť zníženie výkonu programov, ktoré ju nepoužívajú.
  • Nevyžaduje príliš zložité programovacie prostredie.

C a C++

Syntax C++ je prevzatá z jazyka C. Hoci formálne zostáva jedným z princípov C++ zachovať kompatibilitu s jazykom C, v skutočnosti štandardizačné skupiny týchto jazykov neinteragujú a menia nielenže nekorelujú, ale často si ideologicky zásadne protirečia. Takže prvky, ktoré nové štandardy C pridávajú do jadra, sú prvkami štandardnej knižnice v štandarde C ++ a vo všeobecnosti v jadre chýbajú, napríklad dynamické polia, polia s pevnými hranicami, zariadenia na paralelné spracovanie. Stroustrup verí, že spojenie vývoja týchto dvoch jazykov by bolo veľkým prínosom, ale z politických dôvodov je to sotva možné. Takže praktická kompatibilita medzi C a C++ sa postupne stratí.
AT tento príklad, v závislosti od použitého kompilátora bude výstup "C++" alebo "C":

Program 9.1

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

Je to spôsobené tým, že znakové konštanty v C sú typu int a v C++ sú typu char, ale veľkosti týchto typov sa líšia.

Modely životného cyklu aplikácií

Životný cyklus softvér je časový úsek, ktorý začína od momentu rozhodnutia o potrebe tvoriť softvérový produkt a končí okamihom jeho úplného vyradenia z prevádzky. Tento cyklus je procesom budovania a vývoja softvéru (SW). Existuje niekoľko modelov životný cyklus.
Kaskádový modelživotný cyklus (anglický model vodopádu) navrhol v roku 1970 Winston Royce. Zabezpečuje postupnú realizáciu všetkých etáp projektu v presne stanovenom poradí. Prechod do ďalšej fázy znamená úplné dokončenie práce v predchádzajúcej fáze. Požiadavky definované vo fáze generovania požiadaviek sú vo formulári prísne zdokumentované referenčné podmienky a sú fixné počas trvania projektu. Každá etapa končí uvoľnením celá sada dostatočnú dokumentáciu, aby vo vývoji mohol pokračovať ďalší vývojový tím.
Etapy projektu podľa vodopádového modelu:

  1. Tvorba požiadaviek;
  2. Dizajn;
  3. Implementácia;
  4. Testovanie;
  5. implementácia;
  6. Prevádzka a údržba.

Vo vodopádovom modeli prechod z jednej projektovej fázy do druhej predpokladá úplnú správnosť výsledku predchádzajúcej fázy. Pri veľkých projektoch je to takmer nemožné dosiahnuť. Preto je takýto model vhodný len na vývoj malého projektu. (Sám W. Royce sa tohto modelu nedržal a použil iteračný model).
Iteračný model
Alternatívou k vodopádovému modelu je model iteratívneho a prírastkového vývoja (IID), ktorý dostal od T. Gilba v 70. rokoch. názov evolučného modelu. Model IID rozdeľuje životný cyklus projektu na sériu iterácií, z ktorých každá pripomína „miniprojekt“, vrátane všetkých vývojových procesov použitých na vytvorenie menších častí funkcionality v porovnaní s projektom ako celkom. Cieľom každej iterácie je získať pracovnú verziu softvérového systému vrátane funkcionality definovanej integrovaným obsahom všetkých predchádzajúcich a súčasných iterácií. Výsledok finálnej iterácie obsahuje všetky požadované funkcie produktu. Po dokončení každej iterácie teda produkt dostáva prírastok – prírastok – k svojim schopnostiam, ktoré sa teda evolučne vyvíjajú.


Vo väčšine moderných vývojových metodík sú implementované rôzne varianty iteračného prístupu:

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

Rational Unified Process (RUP)(racionálne jednotný proces) je metodika vývoja softvéru spravovaná spoločnosťou Rational Software (IBM). Metodika poskytuje odporúčania pre všetky fázy vývoja: od obchodného modelovania až po testovanie a uvedenie hotového programu do prevádzky. Ako modelovací jazyk sa používa Unified Modeling Language (UML).
Celý životný cyklus vývoja produktu pozostáva zo štyroch fáz, z ktorých každá zahŕňa jednu alebo viac iterácií.

  • Počiatočná fáza (začiatok)
  • Stanovenie rozsahu projektu a množstva požadovaných zdrojov. Stanovujú sa hlavné požiadavky, obmedzenia a kľúčová funkčnosť produktu. Riziká sa hodnotia. Akčné plánovanie. Na konci počiatočnej fázy sa hodnotí dosiahnutie míľnika cieľa životného cyklu, čo znamená dohodu medzi zainteresovanými stranami o pokračovaní projektu.

  • Vypracovanie
  • Dokumentácia požiadaviek. Návrh, implementácia a testovanie spustiteľnej architektúry. Špecifikácia podmienok a nákladov. Zníženie hlavných rizík. Úspešné dokončenie vývojovej fázy znamená dosiahnutie míľnika architektúry životného cyklu.

  • Stavebníctvo
  • Vo fáze „Build“ je implementovaná väčšina funkcionality produktu: je dokončený dizajn aplikácie, zdroj napísané. Fáza budovania končí prvým externým vydaním systému a míľnikom počiatočnej prevádzkovej schopnosti.

  • Implementácia (prechod)
  • Vo fáze „Implementácia“ sa vytvorí a prenesie finálna verzia produktu od vývojára k zákazníkovi. To zahŕňa program beta testovania, vzdelávanie používateľov a zabezpečenie kvality produktov. V prípade, že kvalita nespĺňa očakávania používateľov alebo kritériá stanovené vo fáze Štart, fáza Implementácie sa znova opakuje. Splniť všetky ciele znamená dosiahnuť míľnik hotového produktu (Product Release) a dokončiť celý vývojový cyklus.



« Informačné technológie. Systémové a softvérové ​​inžinierstvo. Procesy životného cyklu softvérové ​​nástroje» . Táto norma bola prijatá Federálnou agentúrou pre technickú reguláciu a metrológiu Ruskej federácie a je podobná medzinárodnej norme ISO/IEC 12207:2008. Tento štandard, vytvára všeobecný rámec pre procesy životného cyklu softvéru, ktorý možno použiť ako návod v softvérovom priemysle. Štandard neponúka konkrétny modelživotný cyklus. Jeho ustanovenia sú spoločné pre všetky modely životného cyklu, metódy a technológie na vytváranie softvéru. Popisuje štruktúru procesov životného cyklu bez špecifikácie spôsobu implementácie alebo vykonávania činností a úloh, ktoré sú súčasťou týchto procesov.

Prezentácia na lekciu
Témy správ
  • Free Software Foundation (FSF)
  • Licencie bezplatného softvéru
  • Slobodný softvér a otvorený zdroj
  • História vývoja programovacích jazykov
  • História C. C a C++
  • Príbeh
  • Kritika C++
  • História UNIXu
  • Špirálový model životného cyklu softvéru
  • UML (English Unified Modeling Language – jednotný modelovací jazyk)
  • Microsoft Solutions Framework
  • IDE pre programovanie v C/C++ v systéme Windows
  • C/C++ kompilátory
  • Vytvorenie konzolovej aplikácie v systéme Windows
Otázky
  1. Prečo sa vodopádový model vývoja softvéru nepoužíva vo veľkých projektoch?
  2. Aký je rozdiel medzi vodopádovými a iteračnými modelmi vývoja?
  3. Uveďte fázy vývoja softvéru v metodike Rational Unified Process (RUP).

Naučiť sa základy a jemnosti programovacieho jazyka C++. Návod s praktické úlohy a testy. Chcete sa naučiť programovať? Potom ste na správnom mieste – tu bezplatné vzdelanie programovanie. Či už máte skúsenosti alebo nie, tieto lekcie programovania vám pomôžu začať vytvárať, kompilovať a ladiť programy C++ v rôznych vývojových prostrediach: vizuálne štúdio, Code::Blocks, Xcode alebo Eclipse.

Veľa príkladov a podrobných vysvetlení. Ideálne pre začiatočníkov (figuríny) aj pokročilejších. Všetko je vysvetlené od začiatku do najmenších detailov. Tieto lekcie (200+) vám poskytnú dobrý základ / základy pre pochopenie programovania nielen v C++, ale aj v iných programovacích jazykoch. A je to úplne zadarmo!

Zahŕňa tiež postupné vytváranie hry v C ++, grafickú knižnicu SFML a viac ako 50 úloh na testovanie vašich schopností a vedomostí v C ++. Bonusom navyše je .

Za repost +20 ku karme a moju vďačnosť!

Kapitola číslo 0. Úvod. Začiatok práce

Kapitola číslo 1. Základy C++

Kapitola číslo 2. Premenné a základné dátové typy v C++

Kapitola číslo 3. Operátori v C++

Kapitola číslo 4. Rozsah a iné typy premenných v C++

Kapitola číslo 5. Poradie, v ktorom sa kód vykonáva v programe. Slučky, vetvy v C++

Štandardná knižnica C/C++ obsahuje množstvo funkcií na čítanie a zápis do konzoly (klávesnica a monitor). Tieto funkcie čítajú a zapisujú dáta ako jednoduchý prúd znakov.

Pojem prúd (stream), používaný v programovaní, úzko súvisí s bežným, každodenným chápaním tohto slova. Vstupný prúd možno porovnať s potrubím, ktorým voda (informácie) vstupuje do bazéna (pamäť počítača), výstupný prúd - s potrubím, ktorým voda opúšťa bazén. Dôležitou vlastnosťou tohto potrubia je, že údaje sa môžu pohybovať iba jedným smerom. Aj keď sa na vstup a výstup použije to isté potrubie, nemôže sa to stať súčasne: ak chcete zmeniť smer toku, musíte ho zastaviť, vykonať nejakú akciu a až potom nasmerovať tok opačným smerom. Ďalšou vlastnosťou potoka je, že takmer nikdy nevysychá. Niekedy vyschne, ale toto obdobie nemôže byť dlhé, ak systém funguje normálne.

štandardná výstupná funkcia printf().

Funkcia printf() je štandardná výstupná funkcia. Pomocou tejto funkcie môžete na obrazovke monitora zobraziť reťazec znakov, číslo, premennú hodnotu...

Funkcia printf() má prototyp v súbore stdio.h
int printf(char *riadiaci retazec, ...);

Ak je úspešná, funkcia printf() vráti počet vytlačených znakov.

Riadiaci reťazec obsahuje dva typy informácií: znaky, ktoré sa priamo zobrazujú na obrazovke, a špecifikátory formátu, ktoré určujú spôsob výstupu argumentov.

Funkcia printf() je formátovaná výstupná funkcia. To znamená, že v parametroch funkcie je potrebné špecifikovať formát výstupných údajov. Formát údajov je určený špecifikátormi formátu. Špecifikátor formátu začína znakom %, za ktorým nasleduje kód formátu.

Špecifikátory formátu:

%S symbol
%d celé desiatkové číslo
%i celé desiatkové číslo
%e desatinné číslo v tvare x.xx e+xx
%E desatinné číslo v tvare x.xx E+xx
%f
%F desatinná desatinná čiarka xx.xxxx
%g %f alebo %e podľa toho, čo je kratšie
%G %F alebo %E podľa toho, čo je kratšie
%o osmičkové číslo
%s znakový reťazec
%u desiatkové číslo bez znamienka
%X hexadecimálne číslo
%X hexadecimálne číslo
%% symbol %
%p ukazovateľ
%n ukazovateľ

Okrem toho je možné na príkazy formátovania použiť modifikátory l a h.

%ld tlačiť dlhý int
%hu vytlačiť krátke nepodpísané
%Lf tlačiť dlhé dvojité

V špecifikátore formátu za symbolom % možno zadať presnosť (počet číslic za desatinnou čiarkou). Presnosť je nastavená nasledovne: %.n<код формата>. kde n je počet číslic za desatinnou čiarkou a<код формата>- jeden z vyššie uvedených kódov.

Napríklad, ak máme premennú x=10,3563 typu float a chceme jej hodnotu zobraziť s presnosťou na 3 desatinné miesta, mali by sme napísať:

printf("Premenna x = %.3f",x);

výsledok:
Premenná x = 10,356

Môžete tiež určiť minimálnu šírku okraja, ktorý sa má vytlačiť. Ak je reťazec alebo číslo väčšie ako špecifikovaná šírka poľa, vytlačí sa celý reťazec alebo číslo.

Napríklad, ak napíšete:

printf("%5d",20);

potom výsledok bude:
20

Všimnite si, že číslo 20 nebolo vytlačené od samého začiatku riadku. Ak chcete, aby boli nevyužité miesta poľa vyplnené nulami, potom musíte pred šírku poľa umiestniť znak 0.

Napríklad:

printf("%05d",20);

výsledok:
00020

Okrem špecifikátorov formátu údajov môže riadiaci reťazec obsahovať riadiace znaky:

\b BS, spodná diera
\f Nová stránka, preklad stránky
\n Nový riadok, posun riadku
\r Vrátenie vozíka
\t Vodorovná karta
\v Vertikálna karta
\" dvojitý citát
\" Apostrof
\\ Spätné lomítko
\0 Null znak, null byte
\a Signál
\N Osmičková konštanta
\xN Hexadecimálna konštanta
\? Otáznik

Najčastejšie budete používať znak \n. S touto riadiacou postavou budete môcť preskočiť na nový riadok. Pozrite si príklady programov a všetko pochopíte.

Príklady programov.

/* Príklad 1 */
#include

void main (void)
{
int a, b, c; // Reklama premenné a,b,c
a = 5;
b = 6;
c=9;
printf("a=%d, b=%d, c=%d",a,b,c);
}

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

/* Príklad 2 */
#include

void main (void)
{
float x,y,z;

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

Printf("Súradnice objektu: x:%.2f, y:%.2f, z:%.2f", x, y, z);
}

Výsledok programu:
Súradnice objektu: x:10,50, y:130,67, z:54,00

/* Príklad 3 */
#include

void main()
{
intx;

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

Výsledok programu:
x=10

/* Príklad 4 */
#include

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

Výsledok programu:
"Text v úvodzovkách"
Obsah kyslíka: 100%

/* Príklad 5 */
#include

void main (void)
{
int a;

A = 11; // 11 v desiatkovej sústave sa rovná b v hex
printf("a-dec=%d, a-hex=%X",a,a);
}

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

/* Príklad 6 */
#include

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

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

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

Výsledok programu:
ABC

/* Príklad 7 */
#include

void main (void)
{
char *str="Môj reťazec.";

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

Výsledok programu:
Toto je moja linka.

/* Príklad 8 */
#include

void main (void)
{
printf("Ahoj!\n"); // Po vytlačení bude nový riadok - \n
printf("Volám sa Paul."); // Toto sa vytlačí na nový riadok
}

Výsledok programu:
Ahoj!
Volám sa Pavel.

štandardná vstupná funkcia scanf().

Funkcia scanf() je formátovaná vstupná funkcia. Pomocou neho môžete zadávať údaje zo štandardného vstupného zariadenia (klávesnice). Vstupmi môžu byť celé čísla, čísla s pohyblivou rádovou čiarkou, znaky, reťazce a ukazovatele.

Funkcia scanf() má v stdio.h nasledujúci prototyp:
int scanf(char *riadiaci retazec);

Funkcia vráti počet premenných, ktorým bola priradená hodnota.

Riadiaci reťazec obsahuje tri druhy znakov: špecifikátory formátu, medzery a iné znaky. Špecifikátory formátu začínajú znakom %.

Špecifikátory formátu:

Pri zadávaní reťazca pomocou funkcie scanf() (špecifikátor formátu %s) sa reťazec zadáva až po prvú medzeru!! tie. ak zadáte reťazec "Ahoj svet!" pomocou funkcie scanf().


scanf("%s",str);

potom po zadaní výsledného reťazca, ktorý bude uložený v poli str, bude pozostávať z jedného slova "Ahoj". FUNKCIA VSTUPUJE DO STRUNCA AŽ DO PRVÉHO PRIESTORU! Ak chcete zadať reťazce s medzerami, použite funkciu

char *gets(char *buf);

Pomocou funkcie gets() môžete zadať celé reťazce. Funkcia get() číta znaky z klávesnice, kým sa neobjaví znak Nový riadok(\n). Samotný znak nového riadku sa zobrazí po stlačení klávesu Enter. Funkcia vráti ukazovateľ na buf. buf - vyrovnávacia pamäť (pamäť) pre vstupný reťazec.

Hoci get() je mimo rámca tohto článku, napíšme si príklad programu, ktorý vám umožní zadať celý riadok z klávesnice a zobraziť ho na obrazovke.

#include

void main (void)
{
tlmič uhlia; // pole (buffer) pre vstupný reťazec

Gets(buffer); // zadajte reťazec a stlačte enter
printf("%s",buffer); // výstup zadaného reťazca na obrazovku
}

Ďalšia dôležitá poznámka! Ak chcete zadať údaje pomocou funkcie scanf(), musíte zadať adresy premenných ako parametre a nie samotné premenné. Ak chcete získať adresu premennej, pred názov premennej zadajte & (ampersand). Znak & znamená prijatie adresy.

Čo znamená adresa? Pokúsim sa vysvetliť. V programe máme premennú. Premenná ukladá svoju hodnotu do pamäte počítača. Takže adresa, ktorú dostaneme pomocou & je adresa v pamäti počítača, kde je uložená hodnota premennej.

Pozrime sa na príklad programu, ktorý nám ukazuje, ako používať &

#include

void main (void)
{
intx;

Printf("Zadajte premennu x:");
scanf("%d"&x);
printf("Premenna x=%d",x);
}

Teraz sa vráťme k riadiacemu riadku funkcie scanf(). znova:

int scanf(char *riadiaci retazec);

Medzera v riadiacom riadku dáva pokyn na preskočenie jednej alebo viacerých medzier vo vstupnom toku. Okrem medzery je možné akceptovať aj znak tabulátora alebo nového riadku. Znak, ktorý nie je nulový, označuje prečítanie a vyradenie tohto znaku.

Oddeľovače medzi dvoma vstupnými číslami sú znaky medzery, tabulátora alebo nového riadku. Znak * za % a pred kódom formátu (špecifikátor formátu) inštruuje čítať údaje určeného typu, ale nie priradiť túto hodnotu.

Napríklad:

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

zadanie 50+20 nastaví i na 50, j na 20 a + sa prečíta a ignoruje.

Príkaz format môže určiť najväčšiu šírku poľa, ktoré sa má čítať.

Napríklad:

scanf("%5s",str);

určuje čítanie prvých 5 znakov zo vstupného toku. Ak zadáte 1234567890ABC, pole str bude obsahovať iba 12345, ostatné znaky budú ignorované. Oddeľovače: medzera, tabulátor a nový riadok – pri zadávaní znaku sa s nimi zaobchádza ako so všetkými ostatnými znakmi.

Ak sa v riadiacom reťazci vyskytnú nejaké iné znaky, sú určené na určenie a preskočenie zodpovedajúceho znaku. 10plus20 znakový prúd podľa operátora

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

priradí x 10, y 20 a preskočí plusové znaky, pretože sa vyskytujú na kontrolnom riadku.

Jednou z výkonných funkcií funkcie scanf() je možnosť špecifikovať sadu skenovania (súbor skenov). Vyhľadávacia množina definuje množinu znakov, s ktorými sa budú porovnávať znaky načítané pomocou scanf(). Funkcia scanf() číta znaky, pokiaľ sa vyskytujú vo vyhľadávacej množine. Keď sa zadaný znak nenájde vo vyhľadávacej sade, funkcia scanf() prejde na ďalší špecifikátor formátu. Vyhľadávacia množina je definovaná zoznamom znakov uzavretých v hranatých zátvorkách. Pred úvodnou zátvorkou je znak %. Pozrime sa na to na príklade.

#include

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

Na obrazovke program zobrazí:
12345
abcdefg456

Pri zadávaní vyhľadávacej množiny môžete na určenie medzier použiť aj znak spojovníka, ako aj maximálnu šírku vstupného poľa.

scanf("%10", str1);

Môžete tiež definovať znaky, ktoré sa nenachádzajú vo vyhľadávacej množine. Pred prvým z týchto znakov je znak ^. Znaková sada rozlišuje medzi malými a veľkými písmenami.

Pripomínam, že pri použití funkcie scanf () jej musíte odovzdať adresy premenných ako parametre. Vyššie uvedený kód bol napísaný:

char str; // pole pre 80 znakov
scanf("%s",str);

Všimnite si, že pred str nie je znak &. Je to preto, že str je pole a názov poľa, str, je ukazovateľ na prvý prvok poľa. Znamienko & sa preto neuvádza. Adresu už odovzdávame funkcii scanf(). Jednoducho povedané, str je adresa v pamäti počítača, kde bude uložená hodnota prvého prvku poľa.

Príklady programov.

Príklad 1
Tento program zobrazí otázku „Koľko máš rokov?:“ a čaká na zadanie. Ak napríklad zadáte číslo 20, program zobrazí reťazec "Máte 20 rokov.". Keď sme zavolali funkciu scanf(), predponu premennej veku sme dali znakom &, pretože funkcia scanf() potrebuje adresy premenných. Funkcia scanf() zapíše zadanú hodnotu podľa zadanú adresu. V našom prípade sa zadaná hodnota 20 zapíše na adresu premennej veku.

/* Príklad 1 */

#include

void main (void)
{
int vek;

Printf("\nKoľko máš rokov?:");
scanf("%d",&vek);
printf("Máš %d rokov.", vek);
}

Príklad 2
Program kalkulačky. Táto kalkulačka dokáže sčítať iba čísla. Ak zadáte 100+34, program vráti výsledok: 100+34=134.

/* Príklad 2 */

#include

void main (void)
{
int x, y;

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

Príklad 3
Tento príklad ukazuje, ako nastaviť šírku čítacieho poľa. V našom príklade je šírka poľa päť znakov. Ak zadáte reťazec s viacerými znakmi, všetky znaky po 5. budú vyradené. Venujte pozornosť volaniu funkcie scanf(). Znak & nepredchádza názvu poľa, pretože názov poľa je adresou prvého prvku poľa.

/* Príklad 3 */

#include

void main (void)
{
charname;

Printf("\nZadajte svoje užívateľské meno (maximálne 5 znakov):");
scanf("%5s", meno);
printf("\nZadali ste %s", meno);
}

Príklad 4
Posledný príklad v tomto článku ukazuje, ako môžete použiť sadu vyhľadávania. Po spustení programu zadajte číslo od 2 do 5.

/* Príklad 4 */

#include

void main (void)
{
charbal;

Printf("Vaše skóre je 2,3,4,5:");
scanf("%", &bal);
printf("\nSkóre %c", bal);
}

Počítače sú pravdepodobne najuniverzálnejšie nástroje, ktoré má ľudstvo k dispozícii. Sú schopní vykonávať neuveriteľné výpočty, umožňujú vám ukladať veľké množstvo informácie, úplne v rôznych častiach planéty, a zároveň je ľahké ich vymieňať bez ohľadu na miesto. Počítače veci uľahčujú každodenné úlohy, a umožňujú vám automatizovať mnohé rutinné procesy, ktorých vykonávanie by bolo pre človeka veľmi únavné a nudné. Je toho toľko, čo počítače dokážu, no napriek tomu počítače nie sú také inteligentné ako ľudia. Aby ste zautomatizovali aj ten najjednoduchší proces, musíte počítaču jasne a jednoznačne povedať, čo presne má robiť. Žiaľ, náš jazyk a počítačový jazyk sú úplne odlišné. Medzi strojom a človekom je teda vážna jazyková bariéra, ktorú treba nejako prekonať, inak nám počítač nebude rozumieť. A hoci nám počítače nerozumejú, samy nič neurobia. Ako prostriedok komunikácie medzi osobou a počítačom bolo vynájdených veľké množstvo programovacích jazykov. Pomocou programovacích jazykov vytvárame programy a počítač už s programami priamo pracuje. Samotné programy sú sady inštrukcií, ktorým môže počítač porozumieť a vykonať ich.

Typy programov

Na efektívnu komunikáciu s počítačom, čo je presne to, čo chceme, existuje široká škála programovacích jazykov.

V závislosti od typu projektu je pri výbere programovacieho jazyka potrebné zvážiť veľa faktorov. Tu je zoznam najvýznamnejších faktorov:

Kompilácia, interpretácia a zostavovanie JIT

Proces kompilácie prekladá kód napísaný v programovacom jazyku do rodného jazyka cieľového počítača. Program, ktorý vykonáva tento proces, sa nazýva kompilátor. Kompilácia môže spôsobiť, že sa kód spustí pomerne rýchlo, najmä ak je kompilátor efektívny pri optimalizácii. Faktom však je, že výsledný kód nemôže fungovať na rôznych operačné systémy a proces kompilácie nejaký čas trvá a čím viac kódu, tým dlhší je proces kompilácie. Stojí za zmienku, že pri akýchkoľvek zmenách v kóde programu je potrebné ho skompilovať a až potom spustiť.

Interpretované programovacie jazyky sú čítané programom nazývaným tlmočník a vykonávané rovnakým programom. Interpretované programovacie jazyky môžu bežať na rôznych operačných systémoch, ako napríklad tlmočník, a nemajú ani dlhé časy kompilácie. Ale programy napísané v interpretovaných jazykoch majú tendenciu byť oveľa pomalšie ako ekvivalentné kompilované programy.

A nakoniec takzvaná on-the-fly kompilácia (alebo JIT kompilácia). Takéto jazyky sa pri spustení programu rýchlo skompilujú. Programy napísané v jazykoch JIT spravidla nie sú optimalizované, čím sa urýchľuje proces kompilácie a obnovuje sa rovnováha medzi výkonom a medzi platformami.

Vysoká alebo nízka úroveň programovania

Nízkoúrovňové jazyky väčšinou pracujú priamo s hardvérom, a preto sú najvhodnejšie na písanie ovládačov zariadení. Ovládače sú programy, ktoré riadia hardvér a majú k nemu priamy prístup. Program napísaný v nízkoúrovňovom jazyku je však zvyčajne ťažké preniesť na iné platformy. Preto sa pre každý operačný systém dodáva rovnaké zariadenie s rôznymi ovládačmi. Nízkoúrovňové programovacie jazyky sa takmer vždy kompilujú.

V jazykoch na vysokej úrovni sa dôraz kladie na koncept jazyka. To znamená, že takýto programovací jazyk by mal byť ľahko zrozumiteľný, napríklad reprezentovať údaje ako polia, reťazce, objekty atď. Jazyk na vysokej úrovni je zvyčajne ľahšie pochopiteľný ako jazyk na nízkej úrovni. A spravidla je oveľa jednoduchšie a rýchlejšie vytvoriť program v jazyku vysokej úrovne ako v jazyku nízkej úrovne. Ako môžeš vidieť rôzne úrovne programovacie jazyky sú navrhnuté pre úplne iné úlohy a nestojí za to porovnávať funkčnosť viacúrovňových jazykov, nemá to zmysel.

Systémy dátových typov programovacích jazykov

Pre každý programovací jazyk existuje špecifikácia, ktorá definuje rôzne pravidlá, ktoré musia programovacie jazyky dodržiavať. Niektoré jazyky nemajú typy údajov, takže sa ich to netýka. Avšak väčšina jazykov (vrátane C++) má dátové typy, takže tieto informácie budú pre vás užitočné.

Silný alebo slabý systém typu údajov

Slabý vstupný systém nekladie žiadne obmedzenia, programátor sa tým musí riadiť. Hovorí sa " slabý systém dáta“ Mám na mysli, že jazyk s takýmto dátovým systémom striktne nereguluje dostupné pretypovanie dátových typov. Napríklad, ak sa do funkcie násobenia namiesto čísla odovzdá reťazec alebo znak, programovacie jazyky bez silného typu vykonajú takýto kód, hoci výsledok násobenia stratí akýkoľvek význam, pretože reťazec nemožno vynásobiť číslo. Navyše, výsledok vykonania tohto nezmyselného násobenia bude nepredvídateľný. Ak je programovací jazyk silne napísaný, potom vo fáze kompilácie kompilátor ohlási chybu a zastaví proces vytvárania projektu. Napríklad,

// ukážkový program C++ #include pomocou menného priestoru std; int main()( char string = "príklad"; int číslo = 5; cout<< string * number << endl; // умножаем строку на число }

V dôsledku toho kompilátor ohlási chybu:

chyba: neplatné operandy typov 'char ' a 'int' na binárny 'operátor*'

Pokúsime sa urobiť to isté v programovacom jazyku bez silného typu - php. Všimnite si, že aj pri deklarovaní premenných nie je potrebné špecifikovať typ údajov.

Výsledok vykonania tohto kódu bude nula. Nevyskytne sa žiadna chyba, hoci by sa zdalo, že nie je možné vynásobiť reťazec číslom. Ale v php je možné všetko. Kompilátor jazyka php neoznámi chybu, skript bude fungovať a dokonca dá výsledok a ak sa náš program skladá z 1000 riadkov kódu, bude pre nás ťažké nájsť túto chybu. Toto je ukážkový príklad programovacieho jazyka so „slabým systémom dátových typov“, to znamená, že predchádzanie takýmto absurdným operáciám spočíva výlučne na pleciach programátora.

Definovaný alebo nedefinovaný typ údajov

To platí pre kompilované aj interpretované jazyky. Mnoho jazykov vyžaduje explicitnú definíciu typu premenných, takže neexistuje žiadna neistota, kompilátor a tlmočník jasne vedia, čo majú robiť. Niektoré programovacie jazyky nevyžadujú, aby ste explicitne definovali typ premenných. Typ údajov je určený automaticky podľa obsahu premennej.

Statický alebo dynamický typ údajov

Ak je jazyk staticky napísaný, potom kompilátor/prekladač vykoná kontrolu typu raz pred procesom kompilácie/interpretácie. Ak je typ údajov dynamický, typy údajov sa kontrolujú v čase spustenia.

Bezpečný alebo nebezpečný systém typu údajov

Existujú situácie, ktoré môžu viesť k nepredvídateľnému výsledku alebo chybe. Bezpečný jazyk zavedie čo najviac obmedzení, aby sa zabezpečilo, že takéto situácie nenastanú. Zatiaľ čo nebezpečný jazyk kladie všetku zodpovednosť na programátora.

Tieto faktory môžu charakterizovať jeden aj niekoľko programovacích jazykov.

Podporované programovacie paradigmy

Programovacie paradigmy sú metodológie alebo spôsoby programovania, ktoré programovací jazyk podporuje. Tu je zoznam hlavných paradigiem:

Deklaratívna paradigma

Deklaratívny programovací jazyk sa zameria viac na cieľ, ako na prostriedky na tento účel. Stačí uviesť, čo je potrebné dosiahnuť, nie je potrebné uviesť, aké prostriedky použiť. Táto paradigma zabraňuje nežiaducim vedľajším účinkom, ktoré sa môžu vyskytnúť pri písaní vlastného kódu.

Funkčná paradigma

Funkcionálne programovanie je podmnožinou deklaratívneho programovania, ktoré sa pokúša riešiť problémy z hľadiska matematických rovníc a funkcií. Funkčné programovanie zaobchádza s premennými a objektmi ako s údajmi, ktoré sa nezdieľajú, na rozdiel od imperatívnych jazykov.

Zovšeobecnená paradigma

Generické programovanie sa zameriava na písanie algoritmov z hľadiska dátových typov, ktoré sa majú definovať. To znamená, že rovnaký algoritmus môže pracovať s rôznymi typmi údajov. Tento prístup môže byť veľmi účinným nástrojom, ale iba ak je dobre implementovaný.

imperatívna paradigma

Imperatívne jazyky umožňujú programátorom poskytnúť počítaču usporiadaný zoznam pokynov, ktoré sú potrebné na dokončenie úlohy. Imperatívne programovacie jazyky sú na rozdiel od deklaratívnych programovacích jazykov.

Štrukturálna paradigma

Štrukturálne programovacie jazyky sú zamerané na poskytovanie určitej formy kódu - hierarchickej štruktúry. Keď je štruktúra kódu jasne viditeľná, poradie, v ktorom sa príkazy vykonávajú, sa stáva intuitívnym. Takéto jazyky sa zvyčajne mračia na „skákanie“ z jedného kusu kódu na druhý, ako je napríklad známy operátor goto, ktorý je definovaný v C a C++.

procedurálna paradigma

Procedurálny programovací jazyk označuje štruktúrovaný programovací jazyk, ktorý podporuje koncepciu procedúry alebo podprogramu.

Objektovo orientovaná paradigma

Objektovo orientované programovanie (niekedy skracované ako OOP) je podmnožinou štruktúrovaného programovania, ktoré vyjadruje programy v termínoch „objektov“. Táto paradigma umožňuje opätovné použitie kódu a je ľahko zrozumiteľná.

Štandardizácia

Majú jazyky oficiálny štandard? Štandardizácia je veľmi dôležitá na zabezpečenie bezkonfliktného pochopenia programu rôznymi kompilátormi/prekladačmi. Niektoré jazyky sú štandardizované Americkým národným inštitútom pre štandardy (ANSI), iné sú štandardizované Medzinárodnou organizáciou pre štandardizáciu (ISO). Všetky programovacie jazyky musia byť štandardizované, inak sa nebude možné dohodnúť na tom, čo je v syntaxi správne a čo nesprávne.

Poďme si charakterizovať programovací jazyk C++

Teraz, keď sme sa pozreli na hlavné charakteristiky programovacích jazykov, určme, aké faktory spĺňa programovací jazyk C++.

C++ je štandardizovaný programovací jazyk ISO.

Istý čas C++ nemalo oficiálny štandard, no od roku 1998 je C++ štandardizované výborom ISO.

kompilovaný jazyk C++.

C++ sa kompiluje priamo do strojového kódu, vďaka čomu je jedným z najrýchlejších jazykov na svete.

C++ je silne typizovaný jazyk.

C++ znamená, že programátor vie, čo robí a umožňuje neuveriteľné množstvo možností, ktoré obmedzuje len predstavivosť.

C++ podporuje statické a dynamické dátové typy.

Kontrola typu údajov sa teda môže vykonávať v čase kompilácie alebo v čase spustenia. A to opäť dokazuje flexibilitu C++.

C++ podporuje mnoho paradigiem.

C++ okrem mnohých iných paradigiem podporuje procedurálne, generické a objektovo orientované programovacie paradigmy.

C++ je prenosný programovací jazyk.

Ako jeden z najpoužívanejších jazykov na svete a ako otvorený jazyk má C++ širokú škálu kompilátorov, ktoré bežia na rôznych platformách. Kód štandardnej knižnice C++ bude fungovať na mnohých platformách.

C++ je plne kompatibilný s jazykom C

V C++ môžete použiť knižnice C a budú fungovať správne.