Tipski programski jezik. §1 Splošne informacije o jeziku. Faze oblikovanja programa. Modeli življenjskega cikla aplikacije Vrsta ali specifikatorji formata ali pretvorbeni znaki ali kontrolni znaki

C++ (beri c-plus-plus) je preveden, statično tipiziran programski jezik za splošne namene, v katerem lahko ustvarite programe katere koli ravni kompleksnosti.
Ta jezik je že več kot 20 let med tremi najbolj priljubljenimi in iskanimi programskimi jeziki. (To lahko preverite na spletni strani TIOBE).
Jezik izvira iz zgodnjih osemdesetih let prejšnjega stoletja, ko je zaposleni v Bell Labsu Björn Stroustrup za svoje potrebe pripravil številne izboljšave jezika C.

Bjarne Stroustrup – ustvarjalec jezika C++

Stroustrup se je odločil razširiti jezik C z zmožnostmi, ki jih najdemo v jeziku Simula. C, ki je osnovni jezik sistema UNIX, na katerem so delovali računalniki Bell, je hiter, bogat s funkcijami in prenosljiv. Stroustrup je dodal možnost dela z razredi in objekti. Posledično se je izkazalo, da je praktične probleme modeliranja enostavno rešiti tako v smislu razvojnega časa (zahvaljujoč uporabi Simuli podobnih razredov) kot v smislu časa izračuna (zahvaljujoč hitrosti C).
Evo, kako o tem govori sam razvijalec jezika:



Leta 1998 je odbor za standarde objavil prvi jezikovni standard, znan kot C++98. C++ se še naprej razvija, da bi izpolnil današnje zahteve. Ena od skupin, ki razvijajo jezik C++ in predložijo predloge za njegovo izboljšavo Odboru za standarde C++, je Pospešek, ki se med drugim ukvarja z izboljšanjem zmogljivosti jezika z dodajanjem funkcij metaprogramiranja. Najnovejši standard je bil izdan leta 2017 in se imenuje C++17. Naslednji standard ne bo dolgo prišel in naj bi se pojavil leta 2020.
Nihče nima pravic do jezika C++; je brezplačen. Marca 2016 je bila v Rusiji ustanovljena delovna skupina WP21 C++. Skupina je bila organizirana za zbiranje predlogov za standard C++, njihovo pošiljanje komiteju in zagovarjanje na generalnih sejah Mednarodne organizacije za standardizacijo.
C++ je jezik z več paradigmami (iz besede paradigma - slog pisanja računalniških programov), ki vključuje široko paleto različnih stilov in tehnologij programiranja. Pogosto ga uvrščajo med objektno usmerjene jezike, vendar strogo gledano temu ni tako. Med delovnim procesom je razvijalec deležen popolne svobode pri izbiri orodij, tako da je problem, rešen z določenim pristopom, rešen čim bolj učinkovito. Z drugimi besedami, C++ ne sili programerja, da se drži samo enega sloga razvoja programa (na primer objektno usmerjenega).
C++ ima bogato standardno knjižnico, ki vključuje običajne vsebnike in algoritme, V/I, regularne izraze, podporo za večnitnost in druge funkcije. C++ je vplival na številne programske jezike, vključno z: Java, C#, D. Ker C++ spada v družino jezikov, ki temeljijo na sintaksi jezika C, lahko zlahka obvladate druge programske jezike te družine: JavaScript, PHP , Perl, Objective-C in mnogi drugi. itd., vključno s samim matičnim jezikom - C. ()
V času svojega obstoja je jezik C++ pridobil trdovratne mite, ki jih je zlahka ovreči (glejte tukaj: 1. in 2. del)

Zgodovina izdaje jezika in standardov

1983

Ustvarjalec jezika je Björn Stroustrup, uslužbenec Bell Labs, je predstavil zgodnjo različico jezika C++ ("C z razredi")

1985

Prva komercialna izdaja C++, jezik prevzame svoje sodobno ime

1986

Izid prve izdaje Programskega jezika C++ - knjige, posvečene C++, avtorja Björna Stroustrupa

1998

Ratificiran je mednarodni standard za jezik C++: ISO/IEC 14882:1998 “Standard za programski jezik C++”

2003
2005

Izšlo je tehnično poročilo knjižnice 1 (TR1). Čeprav uradno ni del standarda, poročilo opisuje razširitve standardne knjižnice, ki bi morale biti vključene v naslednjo različico jezika C++.

2011

Izdaja novega standarda – C++11 ali ISO/IEC 14882:2011; novi standard je vključeval dodatke jezikovnemu jedru in razširitev standardne knjižnice, vključno z večino TR1

2014

Izdaja standarda C++14 (»Mednarodni standard ISO/IEC 14882:2014(E) programski jezik C++«); C++14 je mogoče videti kot majhno razširitev C++11, ki vsebuje večinoma popravke napak in manjše izboljšave

2017

Izid novega standarda – C++1z (C++17). Ta standard je uvedel številne spremembe in dodatke. Na primer, STD je vključeval knjižnice standarda C11, datotečni sistem, ki temelji na boost::filesystem, in večino eksperimentalne knjižnice TS I.

2020

C++20 je neuradno ime standarda ISO/IEC za programski jezik C++, ki naj bi sledil C++17. Osnutek standarda N4800.

Filozofija C++

Björn Stroustrup v svoji knjigi The Design and Evolution of C++ (2007) opisuje načela, ki jih je upošteval pri načrtovanju C++ (skrajšano):

  • Pridobite jezik za splošno uporabo s statičnimi tipi podatkov, učinkovitostjo in prenosljivostjo jezika C.
  • Neposredno in celovito podpira različne stile programiranja.
  • Dajte programerju svobodo izbire, tudi če mu daje možnost, da izbere napačno.
  • Ohranite čim večjo združljivost s C, s čimer omogočite enostaven prehod s programiranja C.
  • Izogibajte se neskladjem med C in C++: vsak konstrukt, ki je veljaven v obeh jezikih, mora pomeniti isto stvar v vsakem od njih in voditi do enakega vedenja programa.
  • Izogibajte se funkcijam, ki so odvisne od platforme ali niso univerzalne.
  • "Ne plačajte za tisto, česar ne uporabljate" - nobena jezikovna funkcija ne sme povzročiti zmanjšanja učinkovitosti programov, ki je ne uporabljajo.
  • Ne zahtevajte preveč zapletenega programskega okolja.

C in C++

Sintaksa C++ je podedovana iz jezika C. Čeprav je formalno eno od načel C++ še vedno ohranjanje združljivosti z jezikom C, standardizacijske skupine za te jezike dejansko ne medsebojno delujejo in spremembe, ki jih naredijo, ne le ne korelirajo, temveč si pogosto ideološko bistveno nasprotujejo. Tako so elementi, ki jih novi standardi C dodajo jedru, v standardnih elementih C++ standardne knjižnice in jih sploh ni v jedru, na primer dinamična polja, polja s fiksnimi mejami, zmogljivosti vzporedne obdelave. Po mnenju Stroustrupa bi bilo združevanje razvoja teh dveh jezikov zelo koristno, vendar je malo verjetno, da bi bilo mogoče iz političnih razlogov. Tako se bo praktična združljivost med C in C++ postopoma izgubila.
V tem primeru bo, odvisno od uporabljenega prevajalnika, izpisan »C++« ali »C«:

Program 9.1

#vključi int main() (printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); vrni 0; )

To je posledica dejstva, da so znakovne konstante v C tipa int, v C++ pa tipa char, vendar so velikosti teh tipov različne.

Modeli življenjskega cikla aplikacije

Življenski krog programska oprema je časovno obdobje, ki se začne od trenutka, ko je sprejeta odločitev o potrebi po izdelavi programskega izdelka, in se konča v trenutku, ko je popolnoma odstranjen iz uporabe. Ta cikel je proces gradnje in razvoja programske opreme. Obstaja več modelov življenjskega cikla.
Kaskadni modelživljenjski cikel (angleški model slapa) je leta 1970 predlagal Winston Royce. Zagotavlja zaporedno izvajanje vseh faz projekta v strogo določenem vrstnem redu. Prehod na naslednjo stopnjo pomeni popoln zaključek dela na prejšnji stopnji. Zahteve, določene v fazi oblikovanja zahtev, so strogo dokumentirane v obliki tehničnih specifikacij in se beležijo za celoten razvoj projekta. Vsaka stopnja doseže vrhunec z izdajo celotnega kompleta dokumentacije, ki zadostuje, da razvoj lahko nadaljuje druga razvojna ekipa.
Faze projekta po modelu slapa:

  1. Oblikovanje zahtev;
  2. Oblikovanje;
  3. Izvedba;
  4. testiranje;
  5. Izvedba;
  6. Delovanje in vzdrževanje.

Pri kaskadnem modelu prehod iz ene faze projekta v drugo predvideva, da je rezultat prejšnje faze popolnoma pravilen. Pri velikih projektih je to skoraj nemogoče doseči. Zato je ta model primeren le za razvoj majhnega projekta. (Sam W. Royce se ni držal tega modela in je uporabil iterativni model).
Iterativni model
Alternativa kaskadnemu modelu je model iterativnega in inkrementalnega razvoja (IID), ki ga je v 70. letih prevzel T. Gilb. ime evolucijskega modela. Model IID vključuje razdelitev življenjskega cikla projekta na zaporedje ponovitev, od katerih je vsaka podobna »mini projektu«, vključno z vsemi razvojnimi procesi, ki se uporabljajo za ustvarjanje manjših delov funkcionalnosti v primerjavi s projektom kot celoto. Cilj vsake iteracije je pridobiti delujočo različico programskega sistema, vključno s funkcionalnostjo, ki jo določa integrirana vsebina vseh prejšnjih in trenutnih iteracij. Rezultat končne iteracije vsebuje vse zahtevane funkcionalnosti izdelka. Tako izdelek z zaključkom vsake iteracije dobi dodatek – prirastek – k svojim zmožnostim, ki se torej razvijajo evolucijsko.


V večini sodobnih razvojnih metodologij se izvajajo različne različice iterativnega pristopa:

Razvojni proces - Rational Unified Process (RUP)

Rational Unified Process (RUP)(rational unified process) je metodologija razvoja programske opreme, ki jo vzdržuje Rational Software (IBM). Metodologija daje priporočila za vse faze razvoja: od poslovnega modeliranja do testiranja in zagona končnega programa. Kot modelni jezik se uporablja Unified Modeling Language (UML).
Celoten življenjski cikel razvoja izdelka je sestavljen iz štirih faz, od katerih vsaka vključuje eno ali več iteracij.

  • Začetna faza (začetek)
  • Določitev obsega projekta in količine potrebnih sredstev. Določene so osnovne zahteve, omejitve in ključne funkcionalnosti produkta. Tveganja so ocenjena. Akcijsko načrtovanje. Na koncu začetne faze se oceni doseganje mejnika cilja življenjskega cikla, ki predpostavlja dogovor med deležniki o nadaljevanju projekta.

  • Pojasnilo
  • Zahteve glede dokumentiranja. Oblikovanje, izvedba in testiranje izvršljive arhitekture. Pojasnitev pogojev in stroškov. Zmanjšanje ključnih tveganj. Uspešen zaključek razvojne faze pomeni doseganje mejnika arhitekture življenjskega cikla.

  • Gradnja
  • V fazi »Build« je implementirana večina funkcionalnosti izdelka: končana je zasnova aplikacije, napisana je izvorna koda. Faza gradnje se konča s prvo zunanjo izdajo sistema in mejnikom začetne operativne zmogljivosti.

  • Uvod
  • V fazi »Implementacija« se izdela končna različica produkta, ki se prenese od razvijalca do naročnika. To vključuje program beta testiranja, usposabljanje uporabnikov in ugotavljanje kakovosti izdelka. V primeru, da kakovost ne ustreza pričakovanjem uporabnikov ali merilom, postavljenim v začetni fazi, se faza implementacije ponovno ponovi. Dokončanje vseh ciljev pomeni doseganje mejnika izdaje izdelka in dokončanje celotnega razvojnega cikla.



"Informacijska tehnologija. Sistemski in programski inženiring. Procesi življenjskega cikla programske opreme". Ta standard je sprejela Zvezna agencija za tehnično regulacijo in meroslovje Ruske federacije in je podoben mednarodnemu standardu ISO/IEC 12207:2008. Ta standard vzpostavlja splošno strukturo procesov življenjskega cikla programske opreme, ki jim je mogoče slediti v industriji programske opreme. Standard ne predlaga posebnega modela življenjskega cikla. Njegove določbe so skupne vsem modelom življenjskega cikla, metodam in tehnologijam za ustvarjanje programske opreme. Opisuje strukturo procesov življenjskega cikla, ne da bi določil, kako izvajati ali dokončati dejavnosti in naloge, vključene v te procese.

Predstavitev za lekcijo
Teme sporočil
  • Free Software Foundation (FSF)
  • Licence za brezplačno programsko opremo
  • Prosta in odprtokodna programska oprema
  • Zgodovina razvoja programskih jezikov
  • Zgodovina jezika C. C in C++
  • Zgodba
  • Kritika C++
  • Zgodovina UNIX-a
  • Spiralni model življenjskega cikla programske opreme
  • UML (Unified Modeling Language)
  • Microsoft Solutions Framework
  • IDE za programiranje C/C++ v sistemu Windows
  • C/C++ prevajalniki
  • Ustvarjanje konzolne aplikacije v sistemu Windows
Vprašanja
  1. Zakaj se model slapa razvoja programske opreme ne uporablja pri velikih projektih?
  2. Kakšna je razlika med slapom in iterativnimi razvojnimi modeli?
  3. Naštejte stopnje razvoja programske opreme v metodologiji Rational Unified Process (RUP).

Programski jezik C++

Zadnja posodobitev: 28.08.2017

Programski jezik C++ je visokonivojski, statično vtipkan, preveden programski jezik za splošne namene, ki je primeren za ustvarjanje najrazličnejših aplikacij. Danes je C++ eden najbolj priljubljenih in razširjenih jezikov.

Korenine ima v jeziku C, ki ga je v letih 1969-1973 v Bell Labs razvil programer Dennis Ritchie. V zgodnjih osemdesetih letih je danski programer Bjarne Stroustrup, ki je takrat delal pri Bell Labs, razvil C++ kot razširitev jezika C. Pravzaprav je na začetku C++ preprosto dopolnil jezik C z nekaterimi zmogljivostmi objektno usmerjenega programiranja. In zato ga je sam Stroustrup sprva imenoval »C z razredi«.

Pozneje je novi jezik začel pridobivati ​​na priljubljenosti. Dodane so mu bile nove funkcije, zaradi katerih ni bil samo dodatek k C-ju, ampak popolnoma nov programski jezik. Posledično je bil "C z razredi" preimenovan v C++. In od takrat naprej sta se oba jezika začela razvijati neodvisno drug od drugega.

C++ je zmogljiv jezik, ki od C-ja podeduje bogate pomnilniške zmogljivosti. Zato se C++ pogosto uporablja v sistemskem programiranju, zlasti pri ustvarjanju operacijskih sistemov, gonilnikov, različnih pripomočkov, protivirusnih programov itd. Mimogrede, Windows OS je večinoma napisan v C++. Toda uporaba tega jezika ni omejena na sistemsko programiranje. C++ se lahko uporablja v programih katere koli ravni, kjer sta pomembni hitrost in zmogljivost. Pogosto se uporablja za izdelavo grafičnih aplikacij in različnih aplikacijskih programov. Posebej pogosto se uporablja tudi za ustvarjanje iger z bogato, bogato vizualizacijo. Poleg tega se v zadnjem času vse bolj krepi mobilna smer, kjer je svojo aplikacijo našel tudi C++. In tudi v spletnem razvoju lahko uporabite tudi C++ za ustvarjanje spletnih aplikacij ali nekaterih podpornih storitev, ki služijo spletnim aplikacijam. Na splošno je C++ zelo razširjen jezik, v katerem lahko ustvarite skoraj vse vrste programov.

C++ je preveden jezik, kar pomeni, da prevajalnik prevede izvorno kodo C++ v izvršljivo datoteko, ki vsebuje nabor strojnih navodil. Toda različne platforme imajo svoje značilnosti, zato prevedenih programov ni mogoče preprosto prenesti z ene platforme na drugo in tam izvajati. Vendar pa so na ravni izvorne kode programi C++ večinoma prenosljivi, razen če se uporabljajo nekatere funkcije, specifične za OS. Razpoložljivost prevajalnikov, knjižnic in razvojnih orodij za skoraj vse običajne platforme vam omogoča prevajanje iste izvorne kode C++ v aplikacije za te platforme.

Za razliko od C vam jezik C++ omogoča pisanje aplikacij v objektno usmerjenem slogu, ki predstavlja program kot zbirko razredov in objektov, ki medsebojno delujejo. Kar poenostavlja ustvarjanje velikih aplikacij.

Glavne stopnje razvoja

V letih 1979-80 je Bjarne Stroustrup razvil razširitev jezika C - "C z razredi". Leta 1983 se je jezik preimenoval v C++.

Leta 1985 je izšla prva komercialna različica jezika C++ in prva izdaja knjige "Programski jezik C++", ki je predstavljala prvi opis tega jezika v odsotnosti uradnega standarda.

Leta 1989 je bila izdana nova različica jezika C++ 2.0, ki je vključevala številne nove funkcije. Po tem se je jezik razvijal relativno počasi do leta 2011. Toda hkrati je leta 1998 prišlo do prvega poskusa standardizacije jezika s strani organizacije ISO (Mednarodna organizacija za standardizacijo). Prvi standard se je imenoval ISO/IEC 14882:1998 ali na kratko C++98. Kasneje, leta 2003, je bila objavljena nova različica standarda C++03.

Leta 2011 je bil objavljen nov standard C++11, ki je vseboval številne dodatke in jezik C++ obogatil z velikim številom novih funkcionalnosti. Po tem je bil leta 2014 izdan majhen dodatek k standardu, znan tudi kot C++14. Še ena ključna izdaja jezika je predvidena za leto 2017.

Prevajalniki in razvojna okolja

Za razvoj programov v C++ potrebujete prevajalnik - ta prevede izvorno kodo v C++ v izvršljivo datoteko, ki jo lahko nato zaženete. Toda trenutno obstaja veliko različnih prevajalnikov. Lahko se razlikujejo v različnih vidikih, zlasti pri izvajanju standardov. Osnovni seznam prevajalnikov za C++ lahko najdete na Wikipediji. Za razvoj je priporočljivo izbrati tiste prevajalnike, ki razvijajo in implementirajo vse najnovejše standarde. Tako bomo v tej vadnici uporabljali predvsem prosto dostopni prevajalnik g++, ki ga je razvil projekt GNU.

Za ustvarjanje programov lahko uporabite tudi IDE, kot so Visual Studio, Netbeans, Eclipse, Qt itd.

Te vadnice so za vsakogar, ne glede na to, ali ste začetnik programiranja ali imate bogate izkušnje s programiranjem v drugih jezikih! To gradivo je za tiste, ki se želijo naučiti jezikov C/C++ od samih osnov do najbolj zapletenih struktur.

C++ je programski jezik, znanje tega programskega jezika vam bo omogočilo nadzor vašega računalnika na najvišji ravni. V idealnem primeru boste lahko računalniku naredili, kar želite. Naše spletno mesto vam bo pomagalo obvladati programski jezik C++.

Namestitev /IDE

Prva stvar, ki jo morate storiti, preden se začnete učiti C++, je zagotoviti, da imate IDE - integrirano razvojno okolje (program, v katerem boste programirali). Če nimate IDE, potem izvolite. Ko se odločite za izbiro IDE, ga namestite in vadite ustvarjanje preprostih projektov.

Uvod v C++

Jezik C++ je nabor ukazov, ki računalniku povedo, kaj naj naredi. Ta niz ukazov se običajno imenuje izvorna koda ali preprosto koda. Ukazi so "funkcije" ali "ključne besede". Ključne besede (rezervirane besede C/C++) so osnovni gradniki jezika. Funkcije so zapleteni gradniki, ker so napisane v smislu enostavnejših funkcij – to boste videli v našem prvem programu, ki je prikazan spodaj. Ta struktura funkcij je podobna vsebini knjige. Vsebina lahko prikazuje poglavja knjige, vsako poglavje v knjigi ima lahko svojo vsebino, sestavljeno iz odstavkov, vsak odstavek ima lahko svoje pododstavke. Čeprav C++ ponuja številne običajne funkcije in rezervirane besede, ki jih lahko uporabite, je še vedno treba napisati svoje lastne funkcije.

V katerem delu programa se začne? Vsak program v C++ ima eno funkcijo, imenujemo jo glavna ali glavna funkcija, izvajanje programa se začne s to funkcijo. Iz glavne funkcije lahko pokličete tudi katere koli druge funkcije, ne glede na to, ali so tiste, ki smo jih napisali mi ali, kot smo že omenili, ki jih ponuja prevajalnik.

Kako torej dostopate do teh standardnih funkcij? Za dostop do standardnih funkcij, ki so priložene prevajalniku, morate vključiti datoteko glave z uporabo direktive predprocesorja - #include. Zakaj je to učinkovito? Poglejmo primer delujočega programa:

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

Oglejmo si podrobneje elemente programa. #include je direktiva "predprocesorja", ki pove prevajalniku, naj vstavi kodo iz datoteke glave iostream v naš program, preden ustvari izvršljivo datoteko. Če datoteko glave povežete s programom, dobite dostop do številnih različnih funkcij, ki jih lahko uporabite v svojem programu. Na primer, operater cout zahteva iostream. Vrstica z uporabo imenskega prostora std; pove prevajalniku, naj uporabi skupino funkcij, ki so del standardne knjižnice std. Ta vrstica omogoča programu tudi uporabo operatorjev, kot je cout. Podpičje je del sintakse C++. Prevajalniku pove, da je to konec ukaza. Čez trenutek boste videli, da se podpičja uporabljajo za zaključek večine ukazov v C++.

Naslednja pomembna vrstica programa je int main(). Ta vrstica pove prevajalniku, da obstaja funkcija z imenom main in da funkcija vrne celo število. Zavit oklepaj ( in ) označujeta začetek (in konec) funkcije. Zavit oklepaj se uporablja tudi v drugih blokih kode, vendar vedno označujejo eno stvar - začetek oziroma konec bloka.

V C++ se objekt cout uporablja za prikaz besedila (izgovarja se "C out"). Uporablja simbole<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

Naslednji ukaz je cin.get(). To je še en klic funkcije, ki bere podatke iz toka vhodnih podatkov in čaka na pritisk tipke ENTER. Ta ukaz preprečuje, da bi se okno konzole zaprlo, dokler ne pritisnete tipke ENTER. To vam daje čas, da vidite rezultate programa.

Ko dosežemo konec glavne funkcije (zaklepni oklepaj), bo naš program operacijskemu sistemu vrnil vrednost 0. Ta vrnjena vrednost je pomembna, ker lahko operacijski sistem z njeno analizo oceni, ali se je naš program uspešno zaključil ali ne. Vrnjena vrednost 0 pomeni uspeh in je vrnjena samodejno (vendar samo za podatkovni tip int; druge funkcije zahtevajo, da ročno vrnete vrednost), če pa bi želeli vrniti nekaj drugega, na primer 1, bi to morali storiti ročno.

#vključi uporaba imenskega prostora std; int main() ( cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

Za utrjevanje gradiva vnesite programsko kodo v IDE in jo zaženite. Ko se program zažene in vidite rezultat, malo eksperimentirajte s stavkom cout. Tako se boste lažje navadili na jezik.

Bodite prepričani, da komentirate svoje programe!

Svoji kodi dodajte komentarje, da bo jasnejša ne samo sebi, ampak tudi drugim. Prevajalnik pri izvajanju kode ignorira komentarje, kar vam omogoča, da uporabite poljubno število komentarjev za opis dejanske kode. Če želite ustvariti komentar, uporabite ali // , ki prevajalniku pove, da je preostanek vrstice komentar, ali /* in nato */ . Ko se učite programirati, je koristno, da lahko komentirate dele kode, da vidite, kako se izhod programa spreminja. Podrobneje si lahko preberete o tehniki komentiranja.

Kaj storiti z vsemi temi vrstami spremenljivk?

Včasih je lahko zmedeno imeti več tipov spremenljivk, ko se zdi, da so nekateri tipi spremenljivk odveč. Zelo pomembno je, da uporabite pravilen tip spremenljivke, saj nekatere spremenljivke zahtevajo več pomnilnika kot druge. Poleg tega so zaradi načina shranjevanja v pomnilnik števila s plavajočo vejico, tipi podatkov float in double "nenatančni" in se jih ne sme uporabljati, ko je treba shraniti natančno vrednost celega števila.

Deklariranje spremenljivk v C++

Če želite deklarirati spremenljivko, uporabite tip sintakse<имя>; . Tukaj je nekaj primerov deklaracij spremenljivk:

Int num; znak char; float num_float;

V eni vrstici je dovoljeno deklarirati več spremenljivk istega tipa, pri čemer mora biti vsaka od njih ločena z vejico.

Int x, y, z, d;

Če ste pozorno pogledali, ste morda opazili, da deklaraciji spremenljivke vedno sledi podpičje. Izvedete lahko več o konvenciji "o poimenovanju spremenljivk".

Pogoste napake pri deklariranju spremenljivk v C++

Če poskusite uporabiti spremenljivko, ki ni deklarirana, se vaš program ne bo prevedel in prejeli boste sporočilo o napaki. V C++ so vse ključne besede jezika, vse funkcije in vse spremenljivke občutljive na velike in male črke.

Uporaba spremenljivk

Zdaj veste, kako deklarirati spremenljivko. Tukaj je primer programa, ki prikazuje uporabo spremenljivke:

#vključi uporaba imenskega prostora std; int main() ( int število; cout<< "Введите число: "; cin >>številka; cin.ignore(); cout<< "Вы ввели: "<< number <<"\n"; cin.get(); }

Oglejmo si ta program in preučimo njegovo kodo, vrstico za vrstico. Ključna beseda int označuje, da je število celo število. Funkcija cin >> prebere vrednost v številko, uporabnik mora za vneseno številko pritisniti enter. cin.ignore() je funkcija, ki prebere znak in ga ignorira. Naš vnos smo organizirali v program, po vnosu številke pritisnemo tipko ENTER, simbol, ki se prav tako prenese v vhodni tok. Ne potrebujemo ga, zato ga zavržemo. Upoštevajte, da je bila spremenljivka deklarirana kot celoštevilski tip, če uporabnik poskuša vnesti decimalno število, bo to okrnjeno (to pomeni, da bo decimalni del števila prezrt). Poskusite vnesti decimalno število ali zaporedje znakov, ko zaženete primer programa, bo odgovor odvisen od vnesene vrednosti.

Upoštevajte, da pri tiskanju iz spremenljivke narekovaji niso uporabljeni. Odsotnost narekovajev pove prevajalniku, da obstaja spremenljivka in zato mora program preveriti vrednost spremenljivke, da bi zamenjal ime spremenljivke z njeno vrednostjo pri izvajanju. Več stavkov za premik v isti vrstici je popolnoma sprejemljivih in izhod bo izveden v istem vrstnem redu. Ločite nizovne literale (nize v narekovajih) in spremenljivke, tako da vsakemu dodelite svoj operater premika<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

Spreminjanje in primerjanje vrednosti

Seveda, ne glede na vrsto podatkov, ki jih uporabljate, spremenljivke niso preveč zanimive brez možnosti spreminjanja njihove vrednosti. Sledi nekaj operatorjev, ki se uporabljajo v povezavi s spremenljivkami:

  • * množenje,
  • - odštevanje,
  • + dodatek,
  • / delitev,
  • = naloga,
  • == enakost,
  • >več
  • < меньше.
  • != neenako
  • >= večje ali enako
  • <= меньше или равно

Operatorje, ki izvajajo matematične funkcije, je treba uporabiti desno od znaka za dodelitev, da se rezultat dodeli spremenljivki na levi.

Tukaj je nekaj primerov:

A = 4 * 6; // uporabi vrstični komentar in podpičje, a je enako 24 a = a + 5; // enako vsoti prvotne vrednosti in pet a == 5 // ne dodeli pet, preveri ali je enako 5 ali ne

Pogosto boste uporabili == v konstruktih, kot so pogojni stavki in zanke.

A< 5 // Проверка, a менее пяти? a >5 // Preverite, ali je več kot pet? a == 5 // Preverjanje, ali je a enako pet? a != 5 // Preverite, ali ni enako pet? a >= 5 // Preverite, ali je a večji ali enak pet? a<= 5 // Проверка, a меньше или равно пяти?

Ti primeri ne prikazujejo zelo jasno uporabe primerjalnih znakov, a ko začnemo preučevati izbirne operatorje, boste razumeli, zakaj je to potrebno.

1. Uvod

Programiranje zahteva nove univerzalne algoritemske modele, strojna oprema pa izvaja algoritme ne samo v drugačni obliki, temveč tudi na podlagi drugačnega algoritemskega modela - avtomatov. Izposoja tehnologije pri razvoju strojne opreme je ključna ideja za programiranje avtomatov. Vendar se sinteza digitalnih naprav razlikuje od programiranja. Toda pri izposoji modela ga po eni strani ni priporočljivo bistveno spreminjati, po drugi strani pa ne gre zanemariti že obstoječe teorije in prakse programiranja.

V nadaljevanju si bomo ogledali tehnologijo SWITCH za načrtovanje avtomatskih programov, v kateri se ves čas srečujete s podobnimi procesi. Po eni strani je tako spremenil model končnega avtomata, da ga je dejansko popeljal izven okvira teorije avtomatov. In po drugi strani vnaša v programiranje koncepte, ki jih programerji težko dojemajo in so včasih preprosto odveč, ker obstaja več znanih analogov iz programske teorije in programerske prakse.

Kot osnovo za razpravo o problemih avtomatskega programiranja bomo vzeli nedavno predavanje Shalyto A.A. in njegovih člankov o "programiranju" v smeri definicije paradigme avtomatskega programiranja.

Standardna knjižnica C/C++ vključuje številne funkcije za branje in pisanje na konzolo (tipkovnico in monitor). Te funkcije berejo in pišejo podatke kot preprost tok znakov.

Koncept toka, ki se uporablja v programiranju, je tesno povezan z običajnim, vsakdanjim razumevanjem te besede. Vhodni tok lahko primerjamo s cevjo, po kateri voda (informacije) vstopa v bazen (pomnilnik računalnika), izhodni tok pa s cevjo, po kateri voda zapušča bazen. Pomembna značilnost te cevi je, da se lahko podatki premikajo samo v eno smer naenkrat. Tudi če sta za vhod in izhod uporabljena ista cev, se to ne more zgoditi hkrati: za zamenjavo smeri toka jo je treba ustaviti, izvesti nekaj dejanja in šele nato je mogoče tok usmeriti v nasprotno smer. Druga značilnost potoka je, da skoraj nikoli ne presahne. Včasih se izsuši, vendar to obdobje ne more biti dolgo, če sistem deluje normalno.

Standardna izhodna funkcija printf()

Funkcija printf() je standardna izhodna funkcija. S to funkcijo lahko na zaslonu monitorja prikažete niz znakov, številko, vrednost spremenljivke ...

Funkcija printf() ima prototip v stdio.h
int printf(char *kontrolni niz, ...);

Če je uspešen, printf() vrne število natisnjenih znakov.

Nadzorna vrstica vsebuje dve vrsti informacij: znake, ki so neposredno natisnjeni na zaslon, in specifikatorje formata, ki določajo, kako se natisnejo argumenti.

Funkcija printf() je formatirana izhodna funkcija. To pomeni, da je treba v parametrih funkcije določiti format podatkov, ki bodo izpisani. Format podatkov je določen z specifikatorji formata. Specifikator formata se začne z znakom %, ki mu sledi koda formata.

Specifikatorji formata:

% z simbol
%d celo decimalno število
%jaz celo decimalno število
%e decimalno število v obliki x.xx e+xx
%E decimalno število v obliki x.xx E+xx
%f
%F decimalno število s plavajočo vejico xx.xxxx
%g %f ali %e, kar je krajše
%G %F ali %E, kar je krajše
%o osmiško število
%s niz znakov
%u decimalno število brez predznaka
%x šestnajstiško število
%X šestnajstiško število
%% simbol %
%p kazalec
%n kazalec

Poleg tega lahko modifikatorja l in h uporabite za ukaze za formatiranje.

%ld natisni dolgo int
%hu znamka kratka nepodpisana
%Lf dolg dvojni žig

V določevalcu formata je za simbolom % mogoče določiti natančnost (število števk za decimalno vejico). Natančnost je nastavljena na naslednji način: %.n<код формата>. Kjer je n število števk za decimalno vejico in<код формата>- eno od zgoraj navedenih kod.

Na primer, če imamo spremenljivko x=10,3563 tipa float in želimo prikazati njeno vrednost natančno na 3 decimalna mesta, potem bi morali napisati:

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

rezultat:
Spremenljivka x = 10,356

Določite lahko tudi najmanjšo širino polja, dodeljenega za tiskanje. Če je vrstica ali številka večja od navedene širine polja, se vrstica ali številka natisne v celoti.

Na primer, če napišete:

printf("%5d",20);

potem bo rezultat naslednji:
20

Upoštevajte, da številka 20 ni bila natisnjena od samega začetka vrstice. Če želite, da so neuporabljeni prostori polja zapolnjeni z ničlami, morate pred širino polja postaviti simbol 0.

Na primer:

printf("%05d",20);

rezultat:
00020

Poleg specifikatorjev formata podatkov lahko nadzorna vrstica vsebuje kontrolne znake:

\b BS, spodaj
\f Nova stran, sprememba strani
\n Nova vrstica, podajanje vrstice
\r Vrnitev kočije
\t Horizontalna tabeliranost
\v Navpični zavihek
\" Dvojni narekovaj
\" Apostrof
\\ Poševnica nazaj
\0 Ničelni znak, ničelni bajt
\a Signal
\N Oktalna konstanta
\xN Šestnajstiška konstanta
\? Vprašaj

Najpogosteje boste uporabili znak \n. S tem kontrolnim znakom lahko preidete v novo vrstico. Poglejte primere programov in vse vam bo jasno.

Primeri programov.

/* Primer 1 */
#vključi

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

Rezultat programa:
a=5, b=6, c=9

/* Primer 2 */
#vključi

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

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

Printf("Koordinate predmeta: x:%.2f, y:%.2f, z:%.2f", x, y, z);
}

Rezultat programa:
Koordinate objekta: x:10.50, y:130.67, z:54.00

/* Primer 3 */
#vključi

void main()
{
int x;

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

Rezultat programa:
x=10

/* Primer 4 */
#vključi

void main(void)
{
printf("\"Besedilo v narekovajih\"");
printf("\nVsebnost kisika: 100%%");
}

Rezultat programa:
"Besedilo v narekovajih"
Vsebnost kisika: 100%

/* Primer 5 */
#vključi

void main(void)
{
int a;

A=11; // 11 v decimalnem je enako b v šestnajstiškem
printf("a-dec=%d, a-hex=%X",a,a);
}

Rezultat programa:
a-dec=11, a-hex=b

/* Primer 6 */
#vključi

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

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

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

Rezultat programa:
ABC

/* Primer 7 */
#vključi

void main(void)
{
char *str="Moj niz.";

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

Rezultat programa:
To je moja linija.

/* Primer 8 */
#vključi

void main(void)
{
printf("Pozdravljeni!\n"); // Po tiskanju bo prišlo do prehoda v novo vrstico - \n
printf("Ime mi je Pavel."); // To bo natisnjeno v novi vrstici
}

Rezultat programa:
Zdravo!
Moje ime je Pavel.

Standardna vhodna funkcija scanf()

Funkcija scanf() je formatirana vhodna funkcija. Z njegovo pomočjo lahko vnašate podatke s standardne vnosne naprave (tipkovnice). Vhodni podatki so lahko cela števila, števila s plavajočo vejico, znaki, nizi in kazalci.

Funkcija scanf() ima naslednji prototip v stdio.h:
int scanf(char *kontrolni niz);

Funkcija vrne število spremenljivk, ki jim je bila dodeljena vrednost.

Kontrolni niz vsebuje tri vrste znakov: določitelje formata, presledke in druge znake. Specifikatorji formata se začnejo z znakom %.

Specifikatorji formata:

Pri vnosu niza s funkcijo scanf() (specifikator formata %s) se niz vnese pred prvim presledkom!! tiste. če vnesete niz "Hello world!" z uporabo funkcije scanf().


scanf("%s",str);

potem bo po vnosu nastalega niza, ki bo shranjen v matriki str, sestavljena iz ene besede "Hello". FUNKCIJA VNESE NIZ PRED PRVIM PRESLEDKOM! Če želite nize vnašati s presledki, uporabite funkcijo

char *dobi(char *buf);

S funkcijo gets() lahko vnesete celotne nize. Funkcija gets() bere znake s tipkovnice, dokler se ne prikaže znak za novo vrstico (\n). Znak za novo vrstico se prikaže, ko pritisnete enter. Funkcija vrne kazalec na buf. buf - medpomnilnik (pomnilnik) za vhodni niz.

Čeprav gets() ni tema tega članka, napišimo primer programa, ki vam omogoča, da vnesete celotno vrstico s tipkovnice in jo prikažete na zaslonu.

#vključi

void main(void)
{
char buffer; // polje (medpomnilnik) za vhodni niz

Gets (medpomnilnik); // vnesite vrstico in pritisnite enter
printf("%s",buffer); // izpis vnesenega niza na zaslon
}

Še ena pomembna opomba! Za vnos podatkov s funkcijo scanf() mora kot parametre posredovati naslove spremenljivk, ne spremenljivk samih. Če želite dobiti naslov spremenljivke, morate pred imenom spremenljivke postaviti & (ampersand). Znak & pomeni prevzem naslova.

Kaj pomeni naslov? Poskušal bom razložiti. V programu imamo spremenljivko. Spremenljivka shrani svojo vrednost v pomnilnik računalnika. To je torej naslov, ki ga dobimo z uporabo & je naslov v pomnilniku računalnika, kjer je shranjena vrednost spremenljivke.

Oglejmo si primer programa, ki nam pokaže, kako uporabljati &

#vključi

void main(void)
{
int x;

Printf("Vnesite spremenljivko x:");
scanf("%d",&x);
printf("Spremenljivka x=%d",x);
}

Zdaj pa se vrnimo k nadzorni vrstici funkcije scanf(). Ponovno:

int scanf(char *kontrolni niz);

Znak za presledek v kontrolnem nizu ukazuje, da je treba enega ali več presledkov preskočiti v vhodnem toku. Poleg presledka je mogoče zaznati tabulator ali znak za novo vrstico. Znak, ki ni nič, pomeni, da je znak prebran in zavržen.

Ločila med številkama, ki ju vnesete, so presledek, tabulator ali nova vrstica. * za % in pred kodo formata (specifikator formata) ukazuje, da se vrsta podatkov prebere, vendar se tej vrednosti ne dodeli.

Na primer:

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

vnos 50+20 bo spremenljivko i nastavil na 50, spremenljivko j na 20, znak + pa bo prebran in prezrt.

Ukaz za format lahko določi največjo širino polja za branje.

Na primer:

scanf("%5s",str);

označuje potrebo po branju prvih 5 znakov iz vhodnega toka. Če vnesete 1234567890ABC, bo niz str vseboval samo 12345, preostali znaki pa bodo prezrti. Ločila: presledek, tabulator in nova vrstica - pri vnosu simbola se obravnavajo kot vsi ostali znaki.

Če se v kontrolnem nizu pojavijo kateri koli drugi znaki, so namenjeni prepoznavanju in preskoku ustreznega znaka. Operater toka znakov 10plus20

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

bo spremenljivki x dodelil vrednost 10, spremenljivki y vrednost 20 in bo preskočil znake plus, ker se pojavljajo v kontrolnem nizu.

Ena od zmogljivih lastnosti funkcije scanf() je njena zmožnost podajanja nabora skeniranja. Iskalni niz definira niz znakov, s katerimi bodo primerjani znaki, ki jih prebere funkcija scanf(). Funkcija scanf() bere znake, dokler se pojavljajo v iskalnem nizu. Takoj, ko vnesenega znaka ni mogoče najti v iskalnem nizu, se funkcija scanf() premakne na naslednji specifikator formata. Iskalni niz je opredeljen s seznamom znakov v oglatih oklepajih. Pred začetnim oklepajem je znak %. Poglejmo si to s primerom.

#vključi

void main(void)
{
char str1, str2;
scanf("%%s", str1, str2);
printf("\n%s\n%s",str1,str2);
}
Vnesemo nabor znakov:
12345abcdefg456

Program bo na zaslonu prikazal:
12345
abcdefg456

Ko podajate iskalni niz, lahko uporabite tudi znak vezaja, da določite razmik in največjo širino vnosnega polja.

scanf("%10", str1);

Določite lahko tudi znake, ki niso vključeni v iskalni niz. Pred prvim od teh znakov je ^. Številni znaki razlikujejo med malimi in velikimi črkami.

Naj vas spomnim, da ji morate pri uporabi funkcije scanf() kot parametre posredovati naslove spremenljivk. Zgornja koda je bila napisana:

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

Upoštevajte, da pred str ni &. To je storjeno, ker je str matrika in je ime matrike - str kazalec na prvi element matrike. Zato se znak & ne sme uporabljati. Naslov že posredujemo funkciji scanf(). No, preprosto povedano, str je naslov v pomnilniku računalnika, kjer bo shranjena vrednost prvega elementa matrike.

Primeri programov.

Primer 1.
Ta program prikaže zahtevo "Koliko si star?:" in čaka na vnos podatkov. Če na primer vnesete številko 20, bo program prikazal vrstico "Stari ste 20 let". Pri klicu funkcije scanf() pred spremenljivko starost postavimo znak &, saj funkcija scanf() potrebuje naslove spremenljivk. Funkcija scanf() bo zapisala vneseno vrednost na navedeni naslov. V našem primeru bo vnesena vrednost 20 zapisana na naslov spremenljivke starost.

/* Primer 1 */

#vključi

void main(void)
{
int starost;

Printf("\nKoliko si star?:");
scanf("%d",&starost);
printf("Stari ste %d let.", starost);
}

Primer 2.
Program za kalkulator. Ta kalkulator lahko samo sešteva številke. Ko vnesete 100+34, bo program dal rezultat: 100+34=134.

/* Primer 2 */

#vključi

void main(void)
{
int x, y;

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

Primer 3.
Ta primer prikazuje, kako nastaviti širino bralnega polja. V našem primeru je širina polja pet znakov. Če vnesete niz z velikim številom znakov, bodo vsi znaki po 5. izločeni. Opazite klic funkcije scanf(). Znak & ni pred imenom imena matrike, ker je ime imena matrike naslov prvega elementa matrike.

/* Primer 3 */

#vključi

void main(void)
{
char ime;

Printf("\nVnesite svoje uporabniško ime (ne več kot 5 znakov):");
scanf("%5s", ime);
printf("\nVnesli ste %s", ime);
}

Primer 4.
Zadnji primer v tem članku prikazuje, kako je mogoče uporabiti iskalni niz. Po zagonu programa vnesite številko od 2 do 5.

/* Primer 4 */

#vključi

void main(void)
{
char bal;

Printf("Vaša ocena je 2,3,4,5:");
scanf("%", &bal);
printf("\nOcena %c", bal);
}