C-taalbeschrijving. §1 Algemene informatie over de taal

Dit artikel bespreekt de functie scanf() op een algemene manier zonder verwijzing naar een specifieke standaard, dus gegevens van alle C99-, C11-, C++11-, C++14-standaarden zijn hier opgenomen. Het is mogelijk dat in sommige standaarden de functie anders werkt dan het materiaal dat in het artikel wordt gepresenteerd.

scanf C-functie - beschrijving

scanf() is een functie die zich bevindt in het headerbestand van stdio.h(C) en cstdio(C++). Het wordt ook wel geformatteerde invoer voor het programma genoemd. scanf leest tekens uit standaardinvoer (stdin) en converteert ze volgens het formaat, en schrijft ze vervolgens naar de opgegeven variabelen. Formaat betekent dat de gegevens bij ontvangst worden teruggebracht tot een bepaalde vorm. Zo wordt de scanf C-functie beschreven:

scanf("%format", &variabele1[, &variabele2,[…]]),

waar variabelen als adressen worden doorgegeven. De reden om op deze manier variabelen aan een functie door te geven ligt voor de hand: als gevolg van de werking ervan retourneert het een waarde die de aanwezigheid van fouten aangeeft, dus de enige manier om de waarden van variabelen te wijzigen is door het adres door te geven. Dankzij deze methode kan de functie ook gegevens van elk type verwerken.

Sommige programmeurs roepen functies zoals scanf() of printf() procedures aan vanwege analogieën met andere talen.

Met Scanf kunt u alle basistaaltypen invoeren: char, int, float, string, enz. In het geval van variabelen van het type string is het niet nodig om het adresteken - “&” aan te geven, aangezien een variabele van het type string een array is en de naam ervan het adres is van het eerste element van de array in het computergeheugen.

Gegevensinvoerformaat of controletekenreeks

Laten we beginnen met een voorbeeld van het gebruik van de scanf C-functie uit de beschrijving.

#erbij betrekken int main() ( int x; while (scanf("%d", &x) == 1) printf("%d\n", x); return 0; //vereiste voor Linux-systemen )

Het invoerformaat bestaat uit de volgende vier parameters: %[*][width][modifiers] type. In dit geval zijn het teken “%” en het type vereiste parameters. Dat wil zeggen, het minimale formaat ziet er als volgt uit: “%s”, “%d” enzovoort.

Over het algemeen zijn de tekens waaruit een formatstring bestaat onderverdeeld in:

  • formaatspecificaties - alles dat begint met het%-symbool;
  • scheidingstekens of witruimtetekens - deze omvatten spatie, tab (\t), nieuwe regel (\n);
  • andere tekens dan witruimte.

De functie is mogelijk onveilig.

Gebruik scanf_s() in plaats van scanf().

(gepost door Visual Studio)

Type- of formaatspecificaties, of conversietekens, of controletekens

De beschrijving van scanf C moet minimaal een formaatspecificatie bevatten, die wordt aangegeven aan het einde van expressies die beginnen met het "%" -teken. Het vertelt het programma welk type gegevens het kan verwachten bij invoer, meestal vanaf het toetsenbord. Een lijst met alle formaatspecificaties vindt u in de onderstaande tabel.

Betekenis

Het programma wacht tot er een teken wordt ingevoerd. De te schrijven variabele moet van het tekentype char zijn.

Het programma verwacht dat een geheel decimaal getal wordt ingevoerd. De variabele moet van het type int zijn.

Het programma verwacht een getal met drijvende komma in exponentiële vorm. De variabele moet van het type float zijn.

Het programma verwacht dat er een getal met drijvende komma wordt ingevoerd. De variabele moet van het type float zijn.

7

Het programma verwacht dat er een getal met drijvende komma wordt ingevoerd. De variabele moet van het type float zijn.

Het programma verwacht dat er een octaal getal wordt ingevoerd. De variabele moet van het type int zijn.

Het programma verwacht dat er een string wordt ingevoerd. Een string wordt beschouwd als een verzameling van willekeurige tekens, tot aan het eerste scheidingsteken dat wordt aangetroffen. De variabele moet van het type string zijn.

Het programma verwacht dat er een hexadecimaal getal wordt ingevoerd. De variabele moet van het type int zijn.

De variabele verwacht een pointerinvoer. De variabele moet van het pointertype zijn.

Schrijft een geheel getal naar een variabele die gelijk is aan het aantal tekens dat tot nu toe door de scanf-functie is gelezen.

Het programma leest een geheel getal zonder teken. Het variabeletype moet een geheel getal zonder teken zijn.

Het programma verwacht dat er een binair getal wordt ingevoerd. De variabele moet van het type int zijn.

Een set scanbare karakters. Het programma wacht op invoer van tekens uit een beperkte pool die is opgegeven tussen scanf en zal werken zolang er tekens uit de opgegeven set in de invoerstroom aanwezig zijn.

Tekens in de notatiereeks

Sterretje (*)

Het sterretje (*) is een vlag die aangeeft dat de toewijzingsbewerking moet worden onderdrukt. Direct na het “%”-teken wordt een asterisk geplaatst. Bijvoorbeeld,

Scanf("%d%*c%d", &x, &y); // negeer het teken tussen twee gehele getallen. scanf("%s%*d%s", str, str2); // negeer het gehele getal tussen twee strings.

Dat wil zeggen, als u de regel "45-20" in de console invoert, zal het programma het volgende doen:

  1. De variabele "x" krijgt de waarde 45.
  2. De variabele "y" krijgt de waarde 20.
  3. En het minteken (streepje) “-” wordt genegeerd dankzij “%*c”.

Breedte (of veldbreedte)

Dit is een geheel getal tussen het teken "%" en de formaatspecificatie die het maximale aantal tekens specificeert dat moet worden gelezen tijdens de huidige leesbewerking.

Er zijn een paar belangrijke punten waarmee u rekening moet houden:

  1. scanf stopt met werken als het een scheidingsteken tegenkomt, zelfs als het nog geen 20 tekens heeft geteld.
  2. Als de invoer meer dan 20 tekens bevat, worden alleen de eerste 20 tekens naar de str-variabele geschreven.

Typemodificatoren (of precisie)

Dit zijn speciale vlaggen die het type gegevens wijzigen dat voor invoer wordt verwacht. De vlag wordt links van de typeaanduiding opgegeven:

  • L of l (kleine L) Wanneer "l" wordt gebruikt met de specificaties d, i, o, u, x, vertelt de vlag het programma dat het invoer van het type long int verwacht. Wanneer "l" wordt gebruikt met de e- of f-specificatie, vertelt de vlag het programma dat het invoer van het type double mag verwachten. Het gebruik van "L" vertelt het programma dat een waarde van het type long double wordt verwacht. Door "l" te gebruiken met de specificaties "c" en "s" vertelt het programma dat dubbelbytetekens van het type wchar_t worden verwacht. Bijvoorbeeld "%lc", "%ls", "%l".
  • h is een vlag die het type kortsluiting aangeeft.
  • hh - geeft aan dat de variabele een verwijzing is naar een waarde van het type ondertekende char of niet-ondertekende char. De vlag kan worden gebruikt met de specificaties d, i, o, u, x, n.
  • ll (twee kleine L) - geeft aan dat de variabele een verwijzing is naar een waarde van het type Signed Int of Unsigned Long Long Int. De vlag wordt gebruikt met de specificaties: d, i, o, u, x, n.
  • j - geeft aan dat de variabele een pointer is om intmax_t of uintmax_t uit het stdint.h headerbestand te typen. Gebruikt met specificaties: d, i, o, u, x, n.
  • z - geeft aan dat de variabele een verwijzing is naar het type size_t, waarvan de definitie in stddef.h staat. Gebruikt met specificaties: d, i, o, u, x, n.
  • t - geeft aan dat de variabele een pointer is naar het type ptrdiff_t. De definitie voor dit type staat in stddef.h. Gebruikt met specificaties: d, i, o, u, x, n.

De afbeelding met modifiers kan duidelijker worden gepresenteerd in de vorm van een tabel. Deze beschrijving van scanf C zal duidelijker zijn voor programmeurs.

Andere karakters

Alle tekens die u in het formaat tegenkomt, worden verwijderd. Het is vermeldenswaard dat de aanwezigheid van witruimte of scheidingstekens (nieuwe regel, spatie, tab) in de controlereeks kan leiden tot ander gedrag van de functie. In de ene versie leest scanf() zonder een aantal scheidingstekens op te slaan totdat het een ander teken tegenkomt dan het scheidingsteken, en in een andere versie doen spaties (alleen zij) er niet toe en is de uitdrukking "%d + %d" gelijkwaardig naar "% d+%d".

Voorbeelden

Laten we een aantal voorbeelden bekijken om u te helpen nadenken over en beter begrijpen hoe de functie werkt.

Scanf("%3s", str); //als u de regel “1d2s3d1;3” in de console invoert, wordt alleen “1d2” naar str scanf("%dminus%d", &x, &y) geschreven; //mintekens tussen twee cijfers worden verwijderd scanf("%5", str); //tekens worden in str ingevoerd totdat er 5 zijn en de tekens bestaan ​​uit cijfers van 0 tot en met 9. scanf("%lf", &d); //verwachte invoer van het type double scanf("%hd", &x); //verwacht een aantal van het type short scanf("%hu", &y); //verwacht een aantal van het type unsigned short scanf("lx", &z); //verwacht aantal type lange int

Uit de gegeven voorbeelden kunt u zien hoe het verwachte aantal verandert met behulp van verschillende symbolen.

scanf C - beschrijving voor beginners

Dit gedeelte is nuttig voor beginners. Vaak moet u niet zozeer een volledige beschrijving van scanf C bij de hand hebben, maar eerder de details van hoe de functie werkt.

  • De functie is enigszins verouderd. Er zijn verschillende implementaties in bibliotheken met verschillende versies. Bijvoorbeeld de verbeterde scanf SC-functie, waarvan een beschrijving te vinden is op de website van Microsoft.
  • Het aantal specificaties in het formaat moet overeenkomen met het aantal argumenten dat aan de functie wordt doorgegeven.
  • Elementen van de invoerstroom mogen alleen worden gescheiden door tekens te scheiden: spatie, tab, nieuwe regel. Komma, puntkomma, punt, enz. - deze tekens zijn geen scheidingstekens voor de functie scanf().
  • Als scanf een scheidingsteken tegenkomt, wordt de invoer gestopt. Als er meer dan één variabele te lezen is, gaat scanf verder met het lezen van de volgende variabele.
  • De kleinste discrepantie in het formaat van de invoergegevens leidt tot onvoorspelbare resultaten van het programma. Het is goed als het programma gewoon eindigt met een fout. Maar vaak blijft het programma werken en doet het het verkeerd.
  • scanf("%20s...", ...); Als de invoerstroom langer is dan 20 tekens, leest scanf de eerste 20 tekens en beëindigt of gaat verder met het lezen van de volgende variabele, indien opgegeven. De volgende scanf-oproep gaat verder met het lezen van de invoerstroom vanaf het punt waar de vorige scanf-oproep was gebleven. Als er een scheidingsteken wordt aangetroffen tijdens het lezen van de eerste 20 tekens, zal scanf stoppen met werken of doorgaan met het lezen van de volgende variabele, zelfs als er geen 20 tekens voor de eerste variabele zijn gelezen. In dit geval worden alle niet-getelde tekens aan de volgende variabele gekoppeld.
  • Als de set te scannen tekens begint met het teken "^", dan leest scanf de gegevens totdat het een scheidingsteken of een teken uit de set tegenkomt. Met "%[^A-E1-5]" worden bijvoorbeeld gegevens uit de stream gelezen totdat een van de Engelse hoofdletters A tot en met E of een van de cijfers 1 tot en met 5 wordt aangetroffen.
  • De scanf C-functie retourneert, zoals beschreven, een getal dat gelijk is aan het succesvolle aantal vermeldingen in variabelen. Als scanf 3 variabelen schrijft, is het resultaat van de succesvolle werking van de functie de terugkeer van het getal 3. Als scanf geen variabelen kan schrijven, is het resultaat 0. En ten slotte, als scanf niet kan beginnen te werken op allemaal om de een of andere reden zal het resultaat EOF zijn.
  • Als de functie scanf() zijn werk niet correct heeft voltooid. Scanf("%d", &x) bijvoorbeeld: er werd een getal verwacht, maar er werden symbolen ontvangen als invoer. De volgende scanf()-aanroep begint vanaf het punt in de invoerstroom waar de vorige functie-aanroep eindigde. Om dit probleem te overwinnen, moet je de problematische karakters verwijderen. Dit kan bijvoorbeeld worden gedaan door scanf("%*s") aan te roepen. Dat wil zeggen dat de functie een reeks tekens leest en weggooit. Op deze slimme manier kunt u doorgaan met het invoeren van de benodigde gegevens.
  • Bij sommige implementaties van scanf() is het gebruik van "-" in de tekenset niet toegestaan.
  • De specificatie “%c” leest elk teken uit de stream. Dat wil zeggen dat het ook het scheidingsteken leest. Om het scheidingsteken over te slaan en door te gaan met het lezen van het gewenste teken, kunt u “%1s” gebruiken.
  • Wanneer u de “c”-specificatie gebruikt, is het acceptabel om de breedte “%10c” te gebruiken, maar dan moet u een array van elementen van het type char als variabele doorgeven aan de scanf-functie.
  • “%” betekent “alle kleine letters van het Engelse alfabet”, en “%” betekent eenvoudigweg 3 tekens: ‘z’, ‘a’, ‘-’. Met andere woorden: het teken "-" betekent alleen een bereik als het tussen twee tekens staat die in de juiste volgorde staan. Als "-" aan het einde van een uitdrukking staat, aan het begin, of in de verkeerde volgorde van tekens aan weerszijden ervan, vertegenwoordigt het eenvoudigweg een koppelteken en geen bereik.

Conclusie

Dit is de conclusie van de beschrijving van scanf C. Het is een goede gemaksfunctie voor het werken in kleine programma's en bij gebruik van een procedurele programmeermethode. Het belangrijkste nadeel is echter het aantal onvoorspelbare fouten dat kan optreden bij het gebruik van scanf. Daarom is het het beste om tijdens het programmeren de beschrijving van scanf C voor ogen te houden. In grote professionele projecten worden iostreams gebruikt vanwege het feit dat ze over hogere capaciteiten beschikken, beter in staat zijn fouten op te vangen en te verwerken, en ook met aanzienlijke hoeveelheden informatie werken. Er moet ook worden opgemerkt dat een beschrijving van scanf C in het Russisch beschikbaar is op veel online bronnen, evenals voorbeelden van het gebruik ervan, vanwege de ouderdom van de functie. Daarom kunt u, indien nodig, het antwoord altijd vinden op thematische forums.

De C/C++ Standard Library bevat een aantal functies voor het lezen en schrijven naar de console (toetsenbord en monitor). Deze functies lezen en schrijven gegevens als een eenvoudige stroom tekens.

Het concept van stroom, dat bij het programmeren wordt gebruikt, is nauw verwant aan het gewone, alledaagse begrip van dit woord. De invoerstroom kan worden vergeleken met een pijp waardoor water (informatie) een zwembad binnenkomt (computergeheugen), en de uitvoerstroom kan worden vergeleken met een pijp waardoor water het zwembad verlaat. Een belangrijk kenmerk van deze pijp is dat gegevens slechts in één richting tegelijk kunnen bewegen. Zelfs als dezelfde pijp wordt gebruikt voor in- en uitgang, kan dit niet tegelijkertijd gebeuren: om de stroomrichting te veranderen, moet deze worden gestopt, moet er een actie worden uitgevoerd, en alleen dan kan de stroom in de tegenovergestelde richting worden gericht. Een ander kenmerk van de beek is dat deze bijna nooit droogvalt. Soms droogt het uit, maar deze periode kan niet lang duren als het systeem normaal functioneert.

De standaarduitvoerfunctie printf()

De printf()-functie is een standaarduitvoerfunctie. Met deze functie kunt u op het beeldscherm een ​​reeks tekens, een getal, de waarde van een variabele weergeven...

De printf() functie heeft een prototype in stdio.h
int printf(char *controletekenreeks, ...);

Indien succesvol, retourneert printf() het aantal afgedrukte tekens.

De controleregel bevat twee soorten informatie: tekens die rechtstreeks op het scherm worden afgedrukt, en formaatspecificaties die specificeren hoe de argumenten worden afgedrukt.

De printf()-functie is een geformatteerde uitvoerfunctie. Dit betekent dat het in de functieparameters noodzakelijk is om het formaat te specificeren van de gegevens die zullen worden uitgevoerd. Het gegevensformaat wordt gespecificeerd door formaatspecificaties. De formaatspecificatie begint met een %-teken gevolgd door een formaatcode.

Formaatspecificaties:

%Met symbool
%D geheel decimaal getal
%i geheel decimaal getal
% e decimaal getal in de vorm x.xx e+xx
% E decimaal getal in de vorm x.xx E+xx
%F
%F decimaal getal met drijvende komma xx.xxxx
%G %f of %e, afhankelijk van welke korter is
%G %F of %E, afhankelijk van welke korter is
%O octaal getal
%S tekenreeks
%u niet-ondertekend decimaal getal
%X hexadecimaal getal
%X hexadecimaal getal
%% symbool %
%P wijzer
%N wijzer

Bovendien kunnen l- en h-modificatoren worden toegepast op opmaakopdrachten.

%ld afdrukken lange int
%hu stempel kort ongesigneerd
%Lf lange dubbele stempel

In de formaatspecificatie kan na het %-symbool de precisie (aantal cijfers na de komma) worden opgegeven. De precisie wordt als volgt ingesteld: %.n<код формата>. Waarbij n het aantal cijfers na de komma is, en<код формата>- een van de bovenstaande codes.

Als we bijvoorbeeld een variabele x=10,3563 van het float-type hebben en we willen de waarde ervan tot op 3 decimalen nauwkeurig weergeven, dan moeten we schrijven:

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

Resultaat:
Variabele x = 10,356

U kunt ook de minimale breedte opgeven van het veld dat moet worden afgedrukt. Als de regel of het nummer groter is dan de opgegeven veldbreedte, wordt de regel of het nummer volledig afgedrukt.

Als u bijvoorbeeld schrijft:

printf("%5d",20);

dan is het resultaat als volgt:
20

Houd er rekening mee dat het getal 20 niet vanaf het begin van de regel is afgedrukt. Als je wilt dat de ongebruikte ruimtes van het veld worden gevuld met nullen, dan moet je een 0-symbool voor de veldbreedte plaatsen.

Bijvoorbeeld:

printf("%05d",20);

Resultaat:
00020

Naast gegevensformaatspecificaties kan de controleregel controletekens bevatten:

\B BS, onder
\F Nieuwe pagina, paginawijziging
\N Nieuwe regel, regelinvoer
\R Vervoer terug
\T Horizontale tabellering
\v Verticaal tabblad
\" Dubbel citaat
\" Apostrof
\\ Backslash
\0 Nul teken, nul byte
\A Signaal
\N Octale constante
\xN Hexadecimale constante
\? Vraagteken

Meestal gebruik je het teken \n. Met dit controlekarakter kun je naar een nieuwe regel gaan. Kijk naar de voorbeeldprogramma's en je zult alles begrijpen.

Voorbeelden van programma's.

/* Voorbeeld 1 */
#erbij betrekken

leegte hoofd(leegte)
{
int a,b,c; // Declaratie van variabelen a,b,c
a=5;
b=6;
c=9;
printf("a=%d, b=%d, c=%d",a,b,c);
}

Resultaat van het programma:
a=5, b=6, c=9

/* Voorbeeld 2 */
#erbij betrekken

leegte hoofd(leegte)
{
zweven x,y,z;

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

Printf("Objectcoördinaten: x:%.2f, y:%.2f, z:%.2f", x, y, z);
}

Resultaat van het programma:
Objectcoördinaten: x:10.50, y:130.67, z:54.00

/* Voorbeeld 3 */
#erbij betrekken

leegte hoofd()
{
int x;

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

Resultaat van het programma:
x=10

/* Voorbeeld 4 */
#erbij betrekken

leegte hoofd(leegte)
{
printf("\"Tekst tussen aanhalingstekens\"");
printf("\nZuurstofgehalte: 100%%");
}

Resultaat van het programma:
"Tekst tussen aanhalingstekens"
Zuurstofgehalte: 100%

/* Voorbeeld 5 */
#erbij betrekken

leegte hoofd(leegte)
{
int a;

EEN=11; // 11 in decimalen is gelijk aan b in hexadecimaal
printf("a-dec=%d, a-hex=%X",a,a);
}

Resultaat van het programma:
a-dec=11, a-hex=b

/* Voorbeeld 6 */
#erbij betrekken

leegte hoofd(leegte)
{
teken ch1,ch2,ch3;

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

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

Resultaat van het programma:
abc

/* Voorbeeld 7 */
#erbij betrekken

leegte hoofd(leegte)
{
char *str="Mijn reeks.";

Printf("Dit is %s",str);
}

Resultaat van het programma:
Dit is mijn lijn.

/* Voorbeeld 8 */
#erbij betrekken

leegte hoofd(leegte)
{
printf("Hallo!\n"); // Na het afdrukken zal er een overgang zijn naar een nieuwe regel - \n
printf("Mijn naam is Paul."); // Dit wordt op een nieuwe regel afgedrukt
}

Resultaat van het programma:
Hallo!
Mijn naam is Pavel.

De standaard invoerfunctie scanf()

De functie scanf() is een geformatteerde invoerfunctie. Met zijn hulp kunt u gegevens invoeren vanaf een standaard invoerapparaat (toetsenbord). Invoergegevens kunnen gehele getallen, getallen met drijvende komma, tekens, tekenreeksen en verwijzingen zijn.

De functie scanf() heeft het volgende prototype in stdio.h:
int scanf(char *controletekenreeks);

De functie retourneert het aantal variabelen waaraan een waarde is toegewezen.

De controletekenreeks bevat drie soorten tekens: formaatspecificaties, spaties en andere tekens. Formaatspecificaties beginnen met het teken %.

Formaatspecificaties:

Wanneer u een string invoert met de functie scanf() (formaatspecificatie %s), wordt de string vóór de eerste spatie ingevoerd!! die. als u de tekenreeks "Hallo wereld!" invoert met behulp van de scanf()-functie


scanf("%s",str);

dan zal na het invoeren van de resulterende tekenreeks, die in de str-array wordt opgeslagen, uit één woord "Hallo" bestaan. DE FUNCTIE VOERT EEN STRING IN VOOR DE EERSTE SPATIE! Als u tekenreeksen met spaties wilt invoeren, gebruikt u de functie

char *krijgt(char *buf);

Met de functie get() kunt u volledige strings invoeren. De functie get() leest tekens van het toetsenbord totdat het nieuweregelteken (\n) verschijnt. Het nieuweregelteken zelf verschijnt wanneer u op Enter drukt. De functie retourneert een verwijzing naar buf. buf - buffer (geheugen) voor de invoerreeks.

Hoewel get() niet het onderwerp is van dit artikel, laten we een voorbeeldprogramma schrijven waarmee u een hele regel vanaf het toetsenbord kunt invoeren en op het scherm kunt weergeven.

#erbij betrekken

leegte hoofd(leegte)
{
char-buffer; // array (buffer) voor de invoerreeks

Krijgt(buffer); // voer een regel in en druk op enter
printf("%s",buffer); // voer de ingevoerde string uit naar het scherm
}

Nog een belangrijke opmerking! Om gegevens in te voeren met behulp van de functie scanf(), moet deze variabeleadressen doorgeven als parameters, en niet de variabelen zelf. Om het adres van een variabele te verkrijgen, moet u de naam van de variabele vooraf laten gaan door & (ampersand). Het &-teken betekent dat u het adres opneemt.

Wat betekent adres? Ik zal het proberen uit te leggen. In het programma hebben we een variabele. Een variabele slaat zijn waarde op in het computergeheugen. Dit is dus het adres dat we gebruiken en is het adres in het computergeheugen waar de waarde van de variabele is opgeslagen.

Laten we eens kijken naar een voorbeeldprogramma dat ons laat zien hoe we &

#erbij betrekken

leegte hoofd(leegte)
{
int x;

Printf("Voer variabele x in:");
scanf("%d",&x);
printf("Variabele x=%d",x);
}

Laten we nu terugkeren naar de controleregel van de functie scanf(). Opnieuw:

int scanf(char *controletekenreeks);

Het spatieteken in de besturingsreeks geeft opdracht om een ​​of meer spaties in de invoerstroom over te slaan. Naast de spatie kan een tab- of nieuweregelteken worden waargenomen. Een niet-null-teken geeft aan dat het teken wordt gelezen en verwijderd.

De scheidingstekens tussen de twee cijfers die u invoert, zijn spatie, tab of nieuwe regel. De * na het % en vóór de formaatcode (formaatspecificatie) geeft het commando welk gegevenstype moet worden gelezen, maar wordt niet aan die waarde toegewezen.

Bijvoorbeeld:

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

Als u 50+20 invoert, wordt variabele i ingesteld op 50, variabele j op 20, en wordt het teken + gelezen en genegeerd.

Met het formaatcommando kan de grootste veldbreedte worden opgegeven die moet worden gelezen.

Bijvoorbeeld:

scanf("%5s",str);

geeft aan dat het nodig is om de eerste 5 tekens uit de invoerstroom te lezen. Als u 1234567890ABC invoert, bevat de str-array alleen 12345 en worden de overige tekens genegeerd. Scheidingstekens: spatie, tab en nieuwe regel - bij het invoeren van een symbool worden ze behandeld als alle andere tekens.

Als er andere tekens voorkomen in de controlereeks, zijn deze bedoeld om het overeenkomstige teken te identificeren en over te slaan. Karakterstream 10plus20-operator

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

wijst de waarde 10 toe aan de x-variabele, de waarde 20 aan de y-variabele, en slaat de plustekens over omdat deze voorkomen in de controlestring.

Een van de krachtige kenmerken van de functie scanf() is de mogelijkheid om een ​​scanset op te geven. De zoekset definieert de set tekens waarmee de tekens die door de functie scanf() worden gelezen, worden vergeleken. De functie scanf() leest tekens zolang ze in de zoekset voorkomen. Zodra het ingevoerde teken niet in de zoekset wordt gevonden, gaat de functie scanf() naar de volgende formaatspecificatie. De zoekset wordt gedefinieerd door een lijst met tekens tussen vierkante haken. Het %-teken wordt vóór het openingshaakje geplaatst. Laten we dit eens bekijken met een voorbeeld.

#erbij betrekken

leegte hoofd(leegte)
{
teken str1, str2;
scanf("%%s", str1, str2);
printf("\n%s\n%s",str1,str2);
}
Laten we een reeks tekens invoeren:
12345abcdefg456

Het programma verschijnt op het scherm:
12345
abcdefg456

Wanneer u een zoekset opgeeft, kunt u ook het koppelteken gebruiken om de spatiëring en de maximale breedte van het invoerveld op te geven.

scanf("%10", str1);

U kunt ook tekens definiëren die niet in de zoekset zijn opgenomen. Het eerste van deze tekens wordt voorafgegaan door een ^. Veel tekens maken onderscheid tussen kleine letters en hoofdletters.

Ik wil u eraan herinneren dat wanneer u de functie scanf() gebruikt, deze variabele adressen als parameters moet doorgeven. De bovenstaande code is geschreven:

teken str; // array van 80 tekens
scanf("%s",str);

Merk op dat str niet wordt voorafgegaan door &. Dit wordt gedaan omdat str een array is en de arraynaam - str een verwijzing is naar het eerste element van de array. Daarom mag het &-teken niet worden gebruikt. We geven het adres al door aan de scanf() functie. Simpel gezegd is str het adres in het computergeheugen waar de waarde van het eerste element van de array wordt opgeslagen.

Voorbeelden van programma's.

Voorbeeld 1.
Dit programma geeft het verzoek "Hoe oud ben je?:" weer en wacht op gegevensinvoer. Als u bijvoorbeeld het getal 20 invoert, geeft het programma de regel “Je bent 20 jaar oud.” weer. Bij het aanroepen van de functie scanf() plaatsen we een &-teken vóór de variabele age, omdat de functie scanf() variabele adressen nodig heeft. De functie scanf() schrijft de ingevoerde waarde naar het opgegeven adres. In ons geval wordt de ingevoerde waarde 20 naar het adres van de leeftijdsvariabele geschreven.

/* Voorbeeld 1 */

#erbij betrekken

leegte hoofd(leegte)
{
int leeftijd;

Printf("\nHoe oud ben je?:");
scanf("%d",&age);
printf("Je bent %d jaar oud.", leeftijd);
}

Voorbeeld 2.
Rekenmachine programma. Deze rekenmachine kan alleen getallen optellen. Wanneer u 100+34 invoert, geeft het programma het resultaat: 100+34=134.

/* Voorbeeld 2 */

#erbij betrekken

leegte hoofd(leegte)
{
int x, y;

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

Voorbeeld 3.
Dit voorbeeld laat zien hoe u de leesveldbreedte instelt. In ons voorbeeld is de veldbreedte vijf tekens. Als u een string met een groot aantal tekens invoert, worden alle tekens na de 5e verwijderd. Besteed aandacht aan de functieaanroep scanf(). Het &-teken gaat niet vooraf aan de arraynaam, omdat de arraynaam het adres is van het eerste element van de array.

/* Voorbeeld 3 */

#erbij betrekken

leegte hoofd(leegte)
{
tekennaam;

Printf("\nVoer uw gebruikersnaam in (niet meer dan 5 tekens):");
scanf("%5s", naam);
printf("\nJe hebt %s ingevoerd", naam);
}

Voorbeeld 4.
Het laatste voorbeeld in dit artikel laat zien hoe een zoekset kan worden gebruikt. Voer na het starten van het programma een getal van 2 tot 5 in.

/* Voorbeeld 4 */

#erbij betrekken

leegte hoofd(leegte)
{
houtskool bal;

Printf("Uw beoordeling is 2,3,4,5:");
scanf("%", &bal);
printf("\nBeoordeling %c", bal);
}

C++ (lees c-plus-plus) is een gecompileerde, statisch getypeerde programmeertaal voor algemene doeleinden waarin u programma's van elk niveau van complexiteit kunt maken.
Al meer dan twintig jaar behoort deze taal tot de drie populairste en meest gevraagde programmeertalen. (U kunt dit verifiëren door de TIOBE-website te bezoeken).
De taal ontstond begin jaren tachtig, toen Bell Labs-medewerker Björn Stroustrup voor zijn eigen behoeften een aantal verbeteringen aan de C-taal bedacht.

Bjarne Stroustrup – maker van de C++-taal

Stroustrup besloot de C-taal uit te breiden met de mogelijkheden van de Simula-taal. C, de basistaal van het UNIX-systeem waarop Bell-computers draaiden, is snel, rijk aan functies en draagbaar. Stroustrup heeft de mogelijkheid toegevoegd om met klassen en objecten te werken. Als gevolg hiervan bleken praktische modelleringsproblemen eenvoudig op te lossen, zowel in termen van ontwikkeltijd (dankzij het gebruik van Simula-achtige klassen) als in termen van rekentijd (dankzij de snelheid van C).
Zo vertelt de taalontwikkelaar er zelf over:



In 1998 werd de eerste taalstandaard, bekend als C++98, gepubliceerd door een normcommissie. C++ blijft evolueren om aan de eisen van vandaag te voldoen. Een van de groepen die de C++-taal ontwikkelt en voorstellen voor verbetering ervan indient bij de C++ Standards Committee is Boost, dat zich onder meer bezighoudt met het verbeteren van de mogelijkheden van de taal door er metaprogrammeerfuncties aan toe te voegen. De nieuwste standaard is in 2017 uitgebracht en heet C++17. De volgende standaard zal niet lang op zich laten wachten en zal naar verwachting in 2020 verschijnen.
Niemand bezit de rechten op de C++-taal; het is gratis. In maart 2016 werd in Rusland een werkgroep WP21 C++ opgericht. De groep werd georganiseerd om voorstellen voor de C++-standaard te verzamelen, deze voor te leggen aan een commissie en ze te verdedigen op algemene vergaderingen van de Internationale Organisatie voor Standaardisatie.
C++ is een taal met meerdere paradigma's (van het woord paradigma - een stijl voor het schrijven van computerprogramma's), die een breed scala aan verschillende programmeerstijlen en -technologieën omvat. Het wordt vaak geclassificeerd als een objectgeoriënteerde taal, maar strikt genomen is dit niet het geval. Tijdens het werkproces krijgt de ontwikkelaar absolute vrijheid in het kiezen van tools, zodat het probleem dat met een bepaalde aanpak wordt opgelost, zo efficiënt mogelijk wordt opgelost. Met andere woorden: C++ dwingt de programmeur niet om slechts één stijl van programmaontwikkeling te volgen (bijvoorbeeld objectgeoriënteerd).
C++ heeft een rijke standaardbibliotheek met algemene containers en algoritmen, I/O, reguliere expressies, ondersteuning voor multithreading en andere functies. C++ heeft veel programmeertalen beïnvloed, waaronder: Java, C#, D. Omdat C++ tot een talenfamilie behoort die gebaseerd is op de syntaxis van de C-taal, kun je gemakkelijk andere programmeertalen van deze familie onder de knie krijgen: JavaScript, PHP , Perl, Objective-C en vele anderen. enz., inclusief de moedertaal zelf - C. ()
Tijdens zijn bestaan ​​heeft de C++-taal hardnekkige mythen verworven die gemakkelijk kunnen worden weerlegd (zie hier: Deel 1 en Deel 2)

Geschiedenis van de taal- en standaardversie

1983

De schepper van de taal is Björn Stroustrup, een medewerker van Bell Labs, introduceerde een vroege versie van de C++-taal (“C met klassen”)

1985

Eerste commerciële release van C++, de taal krijgt zijn moderne naam

1986

Uitgave van de eerste editie van The C++ Programming Language - een boek gewijd aan C++, geschreven door Björn Stroustrup

1998

De internationale standaard voor de C++-taal is geratificeerd: ISO/IEC 14882:1998 “Standard for the C++ Programming Language”

2003
2005

Bibliotheek Technisch Rapport 1 (TR1) is vrijgegeven. Hoewel het rapport officieel geen deel uitmaakt van de standaard, worden uitbreidingen van de standaardbibliotheek beschreven die in de volgende versie van de C++-taal zouden moeten worden opgenomen.

2011

Uitgave van een nieuwe norm – C++11 of ISO/IEC 14882:2011; de nieuwe standaard omvatte toevoegingen aan de taalkern en uitbreiding van de standaardbibliotheek, inclusief het grootste deel van TR1

2014

Vrijgave van de C++14-standaard (“Internationale standaard ISO/IEC 14882:2014(E) programmeertaal C++”); C++14 kan worden gezien als een kleine uitbreiding op C++11, die voornamelijk bugfixes en kleine verbeteringen bevat

2017

De release van een nieuwe standaard – C++1z (C++17). Deze standaard introduceerde veel wijzigingen en toevoegingen. STD omvatte bijvoorbeeld bibliotheken van de C11-standaard, een bestandssysteem gebaseerd op boost::filesystem, en het grootste deel van de experimentele TS I-bibliotheek.

2020

C++20 is de onofficiële naam van de ISO/IEC-standaard voor de programmeertaal C++, die naar verwachting C++17 zal opvolgen. Concept N4800-standaard.

C++ Filosofie

In zijn boek The Design and Evolution of C++ (2007) beschrijft Björn Stroustrup de principes die hij volgde bij het ontwerpen van C++ (afgekort):

  • Krijg een taal voor algemeen gebruik met statische gegevenstypen, de efficiëntie en draagbaarheid van de C-taal.
  • Directe en uitgebreide ondersteuning van een verscheidenheid aan programmeerstijlen.
  • Geef de programmeur keuzevrijheid, ook als het hem de kans geeft om verkeerd te kiezen.
  • Behoud de compatibiliteit met C zoveel mogelijk, waardoor een gemakkelijke overgang van C-programmeren mogelijk wordt.
  • Vermijd discrepanties tussen C en C++: elke constructie die in beide talen geldig is, moet in elk van deze talen hetzelfde betekenen en tot hetzelfde programmagedrag leiden.
  • Vermijd functies die platformafhankelijk of niet universeel zijn.
  • "Betaal niet voor wat u niet gebruikt" - geen enkele taalfunctie mag leiden tot een afname van de prestaties van programma's die er geen gebruik van maken.
  • Vereist geen al te ingewikkelde programmeeromgeving.

C en C++

De syntaxis van C++ is geërfd van de C-taal. Hoewel formeel een van de principes van C++ de compatibiliteit met de C-taal behoudt, hebben de standaardisatiegroepen voor deze talen in feite geen interactie, en de wijzigingen die ze aanbrengen niet. alleen correleren ze niet, maar spreken ze elkaar vaak fundamenteel ideologisch tegen. De elementen die de nieuwe C-standaarden aan de kernel toevoegen, bevinden zich dus in de C++-standaardelementen van de standaardbibliotheek en bevinden zich helemaal niet in de kernel, bijvoorbeeld dynamische arrays, arrays met vaste grenzen, parallelle verwerkingsfaciliteiten. Volgens Stroustrup zou het combineren van de ontwikkeling van deze twee talen van groot voordeel zijn, maar om politieke redenen is dit waarschijnlijk niet mogelijk. De praktische compatibiliteit tussen C en C++ zal dus geleidelijk verloren gaan.
In dit voorbeeld wordt, afhankelijk van de gebruikte compiler, “C++” of “C” uitgevoerd:

Programma 9.1

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

Dit komt door het feit dat karakterconstanten in C van het type int zijn, en in C++ van het type char , maar de grootte van deze typen is verschillend.

Modellen voor de levenscyclus van applicaties

Levenscyclus Software is een periode die begint vanaf het moment dat er een beslissing wordt genomen over de noodzaak om een ​​softwareproduct te maken en eindigt op het moment dat het volledig buiten gebruik wordt gesteld. Deze cyclus is het proces van het bouwen en ontwikkelen van software. Er zijn verschillende levenscyclusmodellen.
Cascade-model levenscyclus (Engels watervalmodel) werd in 1970 voorgesteld door Winston Royce. Het voorziet in de opeenvolgende implementatie van alle fasen van het project in een strikt vaste volgorde. De overgang naar de volgende fase betekent de volledige voltooiing van het werk in de vorige fase. De in de fase van de eisenvorming vastgestelde eisen worden strikt gedocumenteerd in de vorm van technische specificaties en vastgelegd voor de gehele ontwikkeling van het project. Elke fase culmineert in het vrijgeven van een complete set documentatie die voldoende is om de ontwikkeling door een ander ontwikkelteam voort te zetten.
Projectfasen volgens het watervalmodel:

  1. Eisvorming;
  2. Ontwerp;
  3. Uitvoering;
  4. Testen;
  5. Uitvoering;
  6. Bediening en onderhoud.

In het cascademodel gaat de overgang van de ene projectfase naar de andere ervan uit dat het resultaat van de voorgaande fase volledig correct is. Bij grote projecten is dit vrijwel onmogelijk te realiseren. Daarom is dit model alleen geschikt voor de ontwikkeling van een klein project. (W. Royce zelf hield zich niet aan dit model en gebruikte een iteratief model).
Iteratief model
Een alternatief voor het cascademodel is het iteratieve en incrementele ontwikkelingsmodel (IID), dat in de jaren zeventig van T. Gilb werd ontwikkeld. naam van het evolutionaire model. Het IID-model omvat het opbreken van de levenscyclus van een project in een reeks iteraties, die elk op een ‘miniproject’ lijken, inclusief alle ontwikkelingsprocessen die worden toegepast op het creëren van kleinere stukjes functionaliteit in vergelijking met het project als geheel. Het doel van elke iteratie is het verkrijgen van een werkende versie van het softwaresysteem, inclusief functionaliteit die wordt gedefinieerd door de geïntegreerde inhoud van alle voorgaande en huidige iteraties. Het resultaat van de laatste iteratie bevat alle vereiste functionaliteit van het product. Dus met de voltooiing van elke iteratie krijgt het product een toename – een toename – van zijn mogelijkheden, die zich daarom evolutionair ontwikkelen.


In de meeste moderne ontwikkelingsmethoden worden verschillende varianten van de iteratieve aanpak geïmplementeerd:

Ontwikkelingsproces - Rationeel uniform proces (RUP)

Rationeel uniform proces (RUP)(rationeel verenigd proces) is een sdie wordt onderhouden door Rational Software (IBM). De methodologie biedt aanbevelingen voor alle ontwikkelingsfasen: van bedrijfsmodellering tot het testen en in bedrijf stellen van het voltooide programma. Als modelleringstaal wordt de Unified Modeling Language (UML) gebruikt.
De volledige levenscyclus van productontwikkeling bestaat uit vier fasen, die elk een of meer iteraties omvatten.

  • Beginfase (begin)
  • Het bepalen van de omvang van het project en de hoeveelheid benodigde middelen. De basisvereisten, beperkingen en belangrijkste functionaliteit van het product worden bepaald. Risico's worden beoordeeld. Actieplanning. Aan het einde van de initiële fase wordt het behalen van de Lifecycle Objective Milestone beoordeeld, wat een overeenkomst tussen belanghebbenden veronderstelt om het project voort te zetten.

  • Verduidelijking
  • Het documenteren van vereisten. Ontwerp, implementatie en testen van uitvoerbare architectuur. Verduidelijking van voorwaarden en kosten. Het verminderen van de belangrijkste risico's. Succesvolle afronding van de ontwikkelingsfase betekent het bereiken van de Lifecycle Architecture Milestone.

  • Bouw
  • In de “Build”-fase wordt het grootste deel van de functionaliteit van het product geïmplementeerd: het applicatieontwerp is voltooid, de broncode is geschreven. De bouwfase eindigt met de eerste externe release van het systeem en de mijlpaal Initiële operationele capaciteit.

  • Invoering
  • In de fase “Implementatie” wordt de definitieve versie van het product gemaakt en overgedragen van de ontwikkelaar naar de klant. Dit omvat een bètatestprogramma, gebruikerstraining en het bepalen van de kwaliteit van het product. Indien de kwaliteit niet voldoet aan de verwachtingen van de gebruiker of aan de criteria gesteld in de Startfase, wordt de Implementatiefase nogmaals herhaald. Het voltooien van alle doelen betekent het bereiken van de Product Release-mijlpaal en het voltooien van de volledige ontwikkelingscyclus.



“Informatietechnologie. Systeem- en software-engineering. Software levenscyclusprocessen". Deze norm is aangenomen door het Federaal Agentschap voor Technische Regelgeving en Metrologie van de Russische Federatie en is vergelijkbaar met de internationale norm ISO/IEC 12207:2008. Deze standaard legt een algemene structuur vast van softwarelevenscyclusprocessen die in de software-industrie kunnen worden gevolgd. De standaard stelt geen specifiek levenscyclusmodel voor. De bepalingen ervan gelden voor alle levenscyclusmodellen, methoden en technologieën voor het maken van software. Het beschrijft de structuur van levenscyclusprocessen zonder te specificeren hoe de activiteiten en taken die in die processen zijn opgenomen, moeten worden geïmplementeerd of voltooid.

Presentatie voor de les
Berichtonderwerpen
  • Vrije Software Stichting (FSF)
  • Gratis softwarelicenties
  • Vrije Software en Open Source
  • Geschiedenis van de ontwikkeling van programmeertalen
  • De geschiedenis van de C-taal
  • Verhaal
  • Kritiek op C++
  • Geschiedenis van UNIX
  • Spiraalvormig levenscyclusmodel voor software
  • UML (Unified Modeling Language)
  • Microsoft Solutions Framework
  • IDE voor C/C++-programmering op Windows
  • C/C++-compilers
  • Een consoletoepassing maken op Windows
Vragen
  1. Waarom wordt het watervalmodel van softwareontwikkeling niet gebruikt in grote projecten?
  2. Wat is het verschil tussen waterval- en iteratieve ontwikkelingsmodellen?
  3. Noem de stadia van softwareontwikkeling volgens de Rational Unified Process (RUP)-methodologie

1. Inleiding

Programmeren vereist nieuwe universele algoritmische modellen, en hardware implementeert algoritmen niet alleen in een andere vorm, maar ook op basis van een ander algoritmisch model: automaten. Technologie lenen van hardwareontwikkeling is het sleutelidee achter het programmeren van automaten. De synthese van digitale apparaten is echter anders dan programmeren. Maar bij het lenen van een model is het enerzijds niet raadzaam om het significant te veranderen, en anderzijds kan men de reeds bestaande theorie en praktijk van programmeren niet negeren.

Vervolgens kijken we naar de SWITCH-technologie voor het ontwerpen van automaatprogramma's, waarbij je steeds soortgelijke processen tegenkomt. Aan de ene kant veranderde het model van de eindige toestandsmachine zo sterk dat het feitelijk buiten het bereik van de automatentheorie viel. En aan de andere kant introduceert het concepten in de programmering die voor programmeurs moeilijk waar te nemen zijn, en soms simpelweg overbodig zijn, omdat er zijn meer bekende analogen uit de programmatheorie en de programmeerpraktijk.

Als basis voor het bespreken van de problemen van automatisch programmeren nemen we de recente lezing van Shalyto A.A. en zijn ‘programmeer’-artikelen over de definitie van het automatische programmeerparadigma.

C++ programmeertaal

Laatste update: 28/08/2017

De programmeertaal C++ is een statisch getypeerde, gecompileerde programmeertaal voor algemene doeleinden op hoog niveau die geschikt is voor het creëren van een grote verscheidenheid aan toepassingen. Tegenwoordig is C++ een van de meest populaire en wijdverbreide talen.

Het heeft zijn wortels in de C-taal, die in 1969-1973 bij Bell Labs werd ontwikkeld door programmeur Dennis Ritchie. Begin jaren tachtig ontwikkelde de Deense programmeur Bjarne Stroustrup, destijds werkzaam bij Bell Labs, C++ als uitbreiding op de C-taal. In het begin heeft C++ de C-taal eenvoudigweg aangevuld met enkele objectgeoriënteerde programmeermogelijkheden. En daarom noemde Stroustrup het zelf aanvankelijk ‘C met klassen’.

Vervolgens begon de nieuwe taal aan populariteit te winnen. Er werden nieuwe features aan toegevoegd waardoor het niet zomaar een toevoeging aan C was, maar een compleet nieuwe programmeertaal. Als gevolg hiervan werd "C met klassen" hernoemd naar C++. En vanaf dat moment begonnen beide talen zich onafhankelijk van elkaar te ontwikkelen.

C++ is een krachtige taal, die rijke geheugenmogelijkheden heeft geërfd van C. Daarom wordt C++ vaak gebruikt bij het programmeren van systemen, in het bijzonder bij het maken van besturingssystemen, stuurprogramma's, verschillende hulpprogramma's, antivirusprogramma's, enz. Trouwens, Windows OS is meestal geschreven in C++. Maar het gebruik van deze taal is niet beperkt tot systeemprogrammering. C++ kan worden gebruikt in programma's van elk niveau waar snelheid en prestaties belangrijk zijn. Het wordt vaak gebruikt om grafische applicaties en verschillende applicatieprogramma's te maken. Het wordt ook vooral vaak gebruikt om games te maken met rijke, rijke visualisatie. Bovendien wint de mobiele richting de laatste tijd aan kracht, waarbij ook C++ zijn toepassing heeft gevonden. En zelfs bij webontwikkeling kunt u C++ ook gebruiken om webapplicaties of ondersteunende services te maken die webapplicaties bedienen. Over het algemeen is C++ een veelgebruikte taal waarin je vrijwel elk type programma kunt maken.

C++ is een gecompileerde taal, wat betekent dat de compiler de C++-broncode vertaalt naar een uitvoerbaar bestand dat een reeks machine-instructies bevat. Maar verschillende platforms hebben hun eigen kenmerken, dus gecompileerde programma's kunnen niet zomaar van het ene platform naar het andere worden overgebracht en daar worden uitgevoerd. Op broncodeniveau zijn C++-programma's echter grotendeels draagbaar, tenzij bepaalde besturingssysteemspecifieke functies worden gebruikt. En dankzij de beschikbaarheid van compilers, bibliotheken en ontwikkeltools voor vrijwel alle gangbare platforms kunt u dezelfde C++-broncode compileren in applicaties voor deze platforms.

In tegenstelling tot C kunt u met de taal C++ toepassingen schrijven in een objectgeoriënteerde stijl, waarbij een programma wordt weergegeven als een verzameling klassen en objecten die met elkaar interacteren. Wat het maken van grote applicaties vereenvoudigt.

Belangrijkste stadia van ontwikkeling

In 1979-80 ontwikkelde Bjarne Stroustrup een uitbreiding op de C-taal: "C with Classes". In 1983 werd de taal omgedoopt tot C++.

In 1985 werd de eerste commerciële versie van de C++-taal uitgebracht, evenals de eerste editie van het boek "The C++ Programming Language", dat de eerste beschrijving van deze taal vertegenwoordigde bij gebrek aan een officiële standaard.

In 1989 werd een nieuwe versie van de taal C++ 2.0 uitgebracht, die een aantal nieuwe functies bevatte. Hierna ontwikkelde de taal zich relatief langzaam tot 2011. Maar tegelijkertijd werd in 1998 door de ISO-organisatie (International Organization for Standardization) de eerste poging gedaan om de taal te standaardiseren. De eerste standaard heette ISO/IEC 14882:1998, of kortweg C++98. Vervolgens werd in 2003 een nieuwe versie van de C++03-standaard gepubliceerd.

In 2011 werd de nieuwe C++11-standaard gepubliceerd, die veel toevoegingen bevatte en de C++-taal verrijkte met een groot aantal nieuwe functionaliteiten. Hierna werd in 2014 een kleine toevoeging aan de standaard uitgebracht, ook wel bekend als C++14. En een andere belangrijke release van de taal staat gepland voor 2017.

Compilers en ontwikkelomgevingen

Om programma's in C++ te ontwikkelen, heb je een compiler nodig. Deze vertaalt de broncode in C++ naar een uitvoerbaar bestand, dat je vervolgens kunt uitvoeren. Maar op dit moment zijn er veel verschillende compilers. Ze kunnen op verschillende aspecten verschillen, met name wat betreft de implementatie van standaarden. Een basislijst met compilers voor C++ is te vinden op Wikipedia. Het wordt voor de ontwikkeling aanbevolen om die compilers te kiezen die de nieuwste standaarden ontwikkelen en implementeren. Daarom zullen we in deze tutorial voornamelijk de gratis verkrijgbare g++-compiler gebruiken, ontwikkeld door het GNU-project.

U kunt ook IDE's zoals Visual Studio, Netbeans, Eclipse, Qt, enz. gebruiken om programma's te maken.