Računalniki Windows Internet

Tipski programski jezik. §1 Splošne informacije o jeziku. Faze oblikovanja programa. Modeli življenjskega cikla aplikacije Vse o c

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.

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).

Ta članek obravnava funkcijo scanf() na splošen način brez sklicevanja na določen standard, zato so tukaj vključeni podatki iz katerega koli standarda C99, C11, C++11, C++14. Možno je, da v nekaterih standardih funkcija deluje drugače od materiala, predstavljenega v članku.

scanf funkcija C - opis

scanf() je funkcija, ki se nahaja v datoteki glave stdio.h(C) in cstdio(C++), imenuje se tudi formatirani vnos v program. scanf bere znake iz standardnega vnosa (stdin) in jih pretvori glede na format, nato pa jih zapiše v podane spremenljivke. Format pomeni, da se podatki ob prejemu reducirajo na določeno obliko. Tako je opisana funkcija scanf C:

scanf("%format", &spremenljivka1[, &spremenljivka2,[…]]),

kjer se spremenljivke posredujejo kot naslovi. Razlog za posredovanje spremenljivk funkciji na ta način je očiten: kot rezultat njenega delovanja vrne vrednost, ki kaže na prisotnost napak, zato je edini način za spreminjanje vrednosti spremenljivk prehod po naslovu. Tudi zahvaljujoč tej metodi lahko funkcija obdeluje podatke katere koli vrste.

Nekateri programerji kličejo funkcije, kot sta scanf() ali printf() procedure zaradi analogij z drugimi jeziki.

Scanf omogoča vnos vseh osnovnih vrst jezikov: char, int, float, string itd. Pri spremenljivkah tipa niz ni treba navesti znaka naslova - “&”, saj je spremenljivka tipa niz matrika, njeno ime pa je naslov prvega elementa matrike v pomnilniku računalnika.

Format vnosa podatkov ali kontrolni niz

Začnimo z ogledom primera uporabe funkcije scanf C iz opisa.

#vključi int main() ( int x; medtem ko (scanf("%d", &x) == 1) printf("%d\n", x); vrni 0; //zahteva za sisteme linux)

Vhodni format je sestavljen iz naslednjih štirih parametrov: %[*][width][modifiers] type. V tem primeru sta znak »%« in tip obvezna parametra. To pomeni, da je najmanjši format videti takole: "%s", "%d" in tako naprej.

Na splošno so znaki, ki sestavljajo formatni niz, razdeljeni na:

  • specifikatorji formata - vse, kar se začne s simbolom %;
  • ločilni ali presledki - to so presledek, tabulator (\t), nova vrstica (\n);
  • znakov, razen presledkov.

Funkcija morda ni varna.

Uporabite scanf_s() namesto scanf().

(objavil Visual Studio)

Specifikatorji tipa ali formata ali pretvorbeni znaki ali kontrolni znaki

Opis scanf C mora vsebovati vsaj specifikator formata, ki je naveden na koncu izrazov, ki se začnejo z znakom "%". Programu pove vrsto podatkov, ki jih lahko pričakuje ob vnosu, običajno s tipkovnico. Seznam vseh specifikatorjev formata je v spodnji tabeli.

Pomen

Program čaka na vnos znaka. Spremenljivka, ki jo želite zapisati, mora biti znakovnega tipa char.

Program pričakuje, da bo vneseno celo decimalno število. Spremenljivka mora biti tipa int.

Program pričakuje število s plavajočo vejico v eksponentni obliki. Spremenljivka mora biti tipa float.

Program pričakuje vnos števila s plavajočo vejico. Spremenljivka mora biti tipa float.

7

Program pričakuje vnos števila s plavajočo vejico. Spremenljivka mora biti tipa float.

Program pričakuje vnos osmiškega števila. Spremenljivka mora biti tipa int.

Program pričakuje vnos niza. Za niz se šteje nabor poljubnih znakov do prvega ločilnega znaka. Spremenljivka mora biti vrste niz.

Program pričakuje vnos šestnajstiškega števila. Spremenljivka mora biti tipa int.

Spremenljivka pričakuje vnos kazalca. Spremenljivka mora biti tipa kazalca.

Zapiše celoštevilsko vrednost v spremenljivko, ki je enaka številu znakov, ki jih je do zdaj prebrala funkcija scanf.

Program prebere nepredznačeno celo število. Vrsta spremenljivke mora biti celo število brez predznaka.

Program pričakuje vnos binarnega števila. Spremenljivka mora biti tipa int.

Nabor znakov, ki jih je mogoče skenirati. Program čaka na vnos znakov iz omejenega nabora, določenega med scanf, in bo deloval, dokler so v vhodnem toku znaki iz navedenega niza.

Znaki v formatnem nizu

Zvezdica (*)

Zvezdica (*) je zastavica, ki označuje, da je treba operacijo dodelitve onemogočiti. Zvezdica je postavljena takoj za znakom "%". na primer

Scanf("%d%*c%d", &x, &y); //ignoriraj znak med dvema celima številoma. scanf("%s%*d%s", str, str2); //ignoriraj celo število med dvema nizoma.

To pomeni, da če v konzolo vnesete vrstico "45-20", bo program naredil naslednje:

  1. Spremenljivki "x" bo dodeljena vrednost 45.
  2. Spremenljivki "y" bo dodeljena vrednost 20.
  3. In znak minus (pomišljaj) “-” bo prezrt zaradi “%*c”.

Širina (ali širina polja)

To je celo število med znakom "%" in določiteljem formata, ki določa največje število znakov za branje med trenutno operacijo branja.

Upoštevati je treba nekaj pomembnih točk:

  1. scanf se bo prenehal izvajati, če naleti na ločilni znak, tudi če ni preštel 20 znakov.
  2. Če vnos vsebuje več kot 20 znakov, bo v spremenljivko str zapisanih le prvih 20 znakov.

Modifikatorji tipa (ali natančnost)

To so posebne zastavice, ki spreminjajo vrsto podatkov, pričakovanih za vnos. Zastavica je določena levo od specifikatorja tipa:

  • L ali l (mali L) Pri uporabi "l" z specifikatorji d, i, o, u, x, zastavica pove programu, naj pričakuje vnos tipa long int. Pri uporabi "l" z specifikatorjem e ali f zastavica pove programu, da mora pričakovati vnos dvojne vrednosti. Uporaba "L" pove programu, da se pričakuje vrednost tipa long double. Uporaba "l" z specifikatorjema "c" in "s" pove programu, da so pričakovani dvobajtni znaki tipa wchar_t. Na primer "%lc", "%ls", "%l".
  • h je zastavica, ki označuje tip short.
  • hh - označuje, da je spremenljivka kazalec na vrednost tipa signed char ali unsigned char. Zastavo lahko uporabite z specifikatorji d, i, o, u, x, n.
  • ll (dva majhna L) - označuje, da je spremenljivka kazalec na vrednost tipa signed int ali unsigned long long int. Zastavica se uporablja z specifikatorji: d, i, o, u, x, n.
  • j - označuje, da je spremenljivka kazalec na tip intmax_t ali uintmax_t iz datoteke glave stdint.h. Uporablja se z specifikatorji: d, i, o, u, x, n.
  • z - pomeni, da je spremenljivka kazalec na tip size_t, katerega definicija je v stddef.h. Uporablja se z specifikatorji: d, i, o, u, x, n.
  • t - označuje, da je spremenljivka kazalec na tip ptrdiff_t. Definicija tega tipa je v stddef.h. Uporablja se z specifikatorji: d, i, o, u, x, n.

Slika z modifikatorji je lahko bolj jasno predstavljena v obliki tabele. Ta opis scanf C bo programerjem jasnejši.

Drugi liki

Vsi znaki, ki jih najdemo v formatu, bodo zavrženi. Treba je omeniti, da lahko prisotnost presledkov ali ločilnih znakov (nova vrstica, presledek, tabulator) v kontrolnem nizu vodi do drugačnega obnašanja funkcije. V eni različici bo scanf() prebral, ne da bi shranil poljubno število ločil, dokler ne naleti na znak, ki ni ločilo, v drugi različici pa presledki (samo oni) niso pomembni in izraz "%d + %d" je enakovreden na "% d+%d".

Primeri

Oglejmo si številne primere, ki vam bodo v pomoč pri razmišljanju in natančnejšem razumevanju delovanja funkcije.

Scanf("%3s", str); //če v konzolo vnesete vrstico “1d2s3d1;3”, bo v str scanf("%dminus%d", &x, &y) zapisano samo "1d2"; //znaka minus med dvema številkama bosta zavržena scanf("%5", str); //znaki bodo vneseni v str, dokler jih ne bo 5 in bodo znaki številke od 0 do 9. scanf("%lf", &d); //pričakovan vnos tipa double scanf("%hd", &x); //pričakujte številko vrste short scanf("%hu", &y); //pričakujte številko tipa unsigned short scanf("lx", &z); //pričakovano število tipa long int

Iz navedenih primerov lahko vidite, kako se pričakovano število spreminja z uporabo različnih simbolov.

scanf C - opis za začetnike

Ta razdelek bo koristen za začetnike. Pogosto morate imeti pri roki ne toliko popoln opis scanf C, temveč podrobnosti o delovanju funkcije.

  • Funkcija je nekoliko zastarela. Obstaja več različnih izvedb v knjižnicah različnih različic. Na primer izboljšana funkcija scanf S C, katere opis najdete na Microsoftovi spletni strani.
  • Število specifikatorjev v formatu mora ustrezati številu argumentov, posredovanih funkciji.
  • Elementi vhodnega toka morajo biti ločeni samo z ločilnimi znaki: presledek, tabulator, nova vrstica. Vejica, podpičje, pika itd. - ti znaki niso ločila za funkcijo scanf().
  • Če scanf naleti na ločilni znak, se vnos ustavi. Če obstaja več kot ena spremenljivka za branje, bo scanf prešel na branje naslednje spremenljivke.
  • Že najmanjše neskladje v formatu vhodnih podatkov vodi do nepredvidljivih rezultatov programa. Dobro je, če se program samo konča z napako. Toda pogosto program še naprej deluje in to nepravilno.
  • scanf("%20s ...", ...); Če vhodni tok preseže 20 znakov, bo scanf prebral prvih 20 znakov in končal ali prešel na branje naslednje spremenljivke, če je določeno. Naslednji klic scanf bo nadaljeval branje vhodnega toka od mesta, kjer se je prejšnji klic končal. Če med branjem prvih 20 znakov naleti na ločilni znak, bo scanf prenehal delovati ali prešel na branje naslednje spremenljivke, tudi če ni prebral 20 znakov za prvo spremenljivko. V tem primeru bodo vsi nešteti znaki pripeti naslednji spremenljivki.
  • Če se nabor znakov za skeniranje začne z znakom "^", bo scanf prebral podatke, dokler ne naleti na ločilni znak ali znak iz nabora. Na primer, "%[^A-E1-5]" bo bral podatke iz toka, dokler ne naletite na enega od velikih črk A do E ali eno od številk od 1 do 5.
  • Funkcija scanf C, kot je opisano, vrne število, ki je enako uspešnemu številu vnosov v spremenljivke. Če scanf zapiše 3 spremenljivke, bo rezultat uspešnega delovanja funkcije vrnitev števila 3. Če scanf ne more zapisati nobene spremenljivke, bo rezultat 0. In končno, če scanf ne more začeti delovati ob vse iz neznanega razloga bo rezultat EOF.
  • Če funkcija scanf() ni pravilno dokončala svojega dela. Na primer, scanf("%d", &x) - število je bilo pričakovano, vendar so bili kot vnos prejeti simboli. Naslednji klic scanf() se bo začel od točke v vhodnem toku, kjer se je končal prejšnji klic funkcije. Če želite premagati to težavo, se morate znebiti problematičnih znakov. To lahko storite na primer s klicem scanf("%*s"). To pomeni, da bo funkcija prebrala niz znakov in ga zavrgla. Na ta premeten način lahko nadaljujete z vnosom zahtevanih podatkov.
  • Nekatere izvedbe scanf() ne dovoljujejo uporabe "-" v naboru znakov za skeniranje.
  • Specifikator »%c« prebere vsak znak iz toka. To pomeni, da prebere tudi ločilni znak. Če želite preskočiti ločilni znak in nadaljevati z branjem želenega znaka, lahko uporabite »%1s«.
  • Ko uporabljate specifikator »c«, je sprejemljivo uporabiti širino »%10c«, vendar morate potem posredovati matriko elementov tipa char kot spremenljivko funkciji scanf.
  • »%« pomeni »vse male črke angleške abecede«, »%« pa preprosto pomeni 3 znake: »z«, »a«, »-«. Z drugimi besedami, znak "-" pomeni obseg le, če se pojavi med dvema znakoma, ki sta v pravilnem vrstnem redu. Če je "-" na koncu izraza, na začetku ali v napačnem vrstnem redu znakov na obeh straneh izraza, potem preprosto predstavlja znak vezaja in ne obsega.

Zaključek

S tem se zaključi opis scanf C. Je dobra priročna funkcija za delo v majhnih programih in pri uporabi proceduralne metode programiranja. Vendar pa je glavna pomanjkljivost število nepredvidljivih napak, ki se lahko pojavijo pri uporabi scanf. Zato je pri programiranju najbolje imeti pred očmi opis scanf C. V velikih profesionalnih projektih se iostreami uporabljajo zaradi dejstva, da imajo zmogljivosti na višji ravni, so sposobni bolje ujeti in obdelati napake ter delati s precejšnjimi količinami informacij. Prav tako je treba opozoriti, da je opis scanf C v ruščini na voljo v številnih spletnih virih, kot tudi primeri njegove uporabe, zaradi starosti funkcije. Zato lahko po potrebi vedno najdete odgovor na tematskih forumih.

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.