Programmeren in c. Programmeertaal C (C)

C is een tamelijk ‘oude’ programmeertaal; het werd begin jaren zeventig gevormd. Desondanks is C een levende taal in de zin dat deze vandaag de dag actief wordt gebruikt. Het is uitgevonden, gebruikt en wordt gebruikt om belangrijke delen van de programmacode van Unix-achtige besturingssystemen te schrijven. Het wordt ook gebruikt om hulpprogramma's, compilers en, minder vaak, applicatieprogramma's te schrijven. Daarom wordt C een systeemprogrammeertaal genoemd.

De overlevingskansen ervan kunnen worden verklaard door het feit dat de werkingsprincipes van besturingssystemen relatief universeel zijn; ze zijn niet onderhevig aan de vooruitgang en diversiteit die kan worden waargenomen in de omgeving van desktop- en mobiele software en webapplicaties. C is geen taal van zeer hoog niveau, het staat dichter bij computerarchitectuur. Hierdoor zijn C-programma’s compact en snel.

C ondersteunt geen objectgeoriënteerd programmeren. OOP-ondersteuning is geïmplementeerd in C++. Deze laatste is weliswaar voortgekomen uit de C-taal, maar is er geen “voortzetting” van, maar is een aparte taal die geleerd kan worden zonder C te kennen. Het leren van C is echter nuttig voordat je zijn “gevorderde kleine broertje” leert kennen, omdat De syntaxis van de talen is vergelijkbaar, C overbelast de hersenen van een beginnende programmeur niet met superkrachten en leert hem de essentie te begrijpen van wat er gebeurt.

Is C goed om voor het eerst met programmeren te beginnen? Als je niet aan een universiteit studeert in een specialiteit die verband houdt met IT, dan nee. C vereist inzicht in de organisatie en werking van hardware, met name geheugen. Veel hiervan wordt gedaan met aanwijzingen, zij spelen een sleutelrol; dit onderwerp is vrij moeilijk te begrijpen en wordt meestal niet op school bestudeerd.

Natuurlijk kun je de basisprincipes van programmeren met C leren zonder dat je pointers hoeft te leren. Iemand zal echter denken dat hij C kent zonder er inhoudelijk veel van af te weten. De C-taal is gemaakt door professionele programmeurs met verstand van hardware om het UNIX-besturingssysteem te schrijven. Het was niet bedoeld als taal voor het lesgeven aan beginners.

Omgevingen en compilers voor C-programmering

Als je een van de GNU/Linux-distributies gebruikt, is elke teksteditor met syntaxisaccentuering voldoende, je hebt ook GCC en een terminal nodig.

Er zijn editors voor programmeurs die verschillende add-ons bevatten, waaronder een terminal, bladeren door mappen, enz. Bijvoorbeeld Geany of Atom.

C is een gecompileerde programmeertaal. In GNU/Linux wordt voor het verkrijgen van uitvoerbare bestanden GCC gebruikt - een set compilers, inclusief een compiler voor C. Om een ​​uitvoerbaar bestand uit een bronbestand te verkrijgen (meestal hebben dergelijke bestanden de extensie *.c), moet u uitvoeren een commando in de terminal dat er ongeveer zo uitziet:

gcc -o hallo hallo.c

Waar gcc een opdracht is die een programma start dat compilatie- en andere acties uitvoert; -o – een schakelaar die aangeeft dat we handmatig de naam van het uitvoerbare bestand opgeven; hallo – naam van het resulterende uitvoerbare bestand; hello.c is de naam van het broncodebestand. De naam van het uitvoerbare bestand kan worden weggelaten:

gcc hallo.c

In dit geval heeft het uitvoerbare bestand de standaardnaam a.out.

Windows heeft zijn eigen set compilers - MinGW. Het kan op zichzelf worden gebruikt, maar is opgenomen in de eenvoudige Dev-C++-ontwikkelomgeving, wat een goede keuze kan zijn om te leren programmeren in C en C++.

Selecteer bij het opslaan het bestandstype "C-bronbestanden (*.c)". Het programma wordt gecompileerd en gestart door op de F9-toets te drukken. Na uitvoering sluit het programma direct af en is het resultaat niet te zien. Om dit te voorkomen, schrijft u twee extra regels: #include en getch(). (Dit is mogelijk niet relevant voor een nieuwere versie van Dev-C++.)

"Hallo wereld" in GNU/Linux:

#erbij betrekken \N") ; }

"Hallo wereld" op Windows:

#erbij betrekken #erbij betrekken int main() (printf("Hallo wereld \N");

haal();

)

Aan de andere kant zijn er een groot aantal platformonafhankelijke ontwikkelomgevingen. Bijvoorbeeld Eclipse + CDT-module, KDevelop, CLion. Deze laatste wordt betaald, geproduceerd door JetBrains, een leider in IDE-ontwikkeling, maar heeft een proefperiode van 30 dagen, wat voldoende kan zijn voor training. CLion is handiger dan andere IDE's.

"Hallo wereld" in C

Aan de hand van het voorbeeld van een eenvoudig programma zullen we meteen enkele kenmerken van de programmeertaal C opmerken.

De printf() functie is ontworpen om gegevens af te drukken. Het doel ervan is vergelijkbaar met de write()-procedure in Pascal en de print()-functie in Python. De functie printf() wordt na het afdrukken niet op een nieuwe regel afgebroken. Daarom wordt voor de overgang een speciaal teken gebruikt, dat wordt aangegeven met de combinatie \n. Volledige C-expressies worden gescheiden door puntkomma's.

In C maken I/O-functies geen deel uit van de taal. In Python hoeven we bijvoorbeeld geen enkele module te importeren om de functies print() en input() te gebruiken. In C kunnen we niet simpelweg de functie printf() aanroepen, omdat C zelf heeft het simpelweg niet. Deze functie, evenals een aantal andere, kan worden ingeschakeld met behulp van het headerbestand stdio.h. Dit is precies de reden waarom de regel aan het begin van het programma wordt geschreven #erbij betrekken . Include wordt vanuit het Engels vertaald als “inschakelen”, en stdio is een afkorting voor “standaard input-output”.

Headerbestanden (ze eindigen op *.h) bevatten doorgaans declaraties van bepaalde functies. Een declaratie is eenvoudigweg een beschrijving van een functie: welke parameters er nodig zijn en wat deze retourneert. De functiecode zelf (definitie) bevindt zich niet in het headerbestand, maar in bibliotheken (andere bestanden), die mogelijk al zijn gecompileerd en zich in systeemmappen bevinden. Voordat een programma wordt gecompileerd, wordt de C-taalpreprocessor gestart. Deze bevat onder andere aan het begin van het programmabestand de inhoud van de daarin gespecificeerde headerbestanden.

Praktisch werk

Geef commentaar op de eerste regel van de HelloWorld-code. Probeer het programma te compileren. Heeft u het uitvoerbare bestand kunnen bemachtigen? Welke waarschuwing gaf de compiler?

1 // - commentaar van één regel in C-taal; /* … */ - meerregelig commentaar in C-taal.

Intersectorale Raad voor Standaardisatie van Informatietechnologieën van het RSPP-Comité voor Technische Regelgeving, Standaardisatie en Conformiteitsbeoordeling.

Log in op de oude website TK-MTK-22

Excuses voor eventuele tijdelijke fouten. De portal is in ontwikkeling, dus sommige secties zijn tijdelijk geblokkeerd.

Het Competentiecentrum op het gebied van de standaardisatie van informatietechnologieën (CC SIT) is opgericht in het belang van de ontwikkeling van de capaciteiten van de Intersectorale Raad van de RSPP-commissie voor technische regelgeving, standaardisatie en conformiteitsbeoordeling (hierna de Raad genoemd). De praktijk leert dat het functioneren van de Raad alleen als adviesorgaan bij nieuwe taken niet langer het gewenste effect oplevert.

Met de goedkeuring en start van de implementatie van het programma voor de digitale economie begonnen er nieuwe uitdagingen te ontstaan ​​op het gebied van IT-standaardisatie. In de eerste plaats is het gebrek aan informatie voor specialisten op dit gebied aan het licht gekomen; veel besluiten zijn vanuit wetenschappelijk oogpunt niet voldoende gerechtvaardigd, verouderd of ontberen de noodzakelijke regelgeving en wetgeving, en het gebrek aan gespecialiseerd personeel is duidelijk geworden. . En het allerbelangrijkste: er is behoefte aan interdepartementale of intersectorale oplossingen op het gebied van het creëren van een uniforme informatieruimte, die een belangrijke factor zou moeten worden in de transitie naar een nieuwe technologische structuur.

De status van de Raad als publieke organisatie voldeed niet langer aan de opkomende taken en de noodzaak ontstond om een ​​structuur te creëren in de status van een juridische entiteit, waaraan nieuwe taken konden worden toevertrouwd die zich op het gebied van IT-standaardisatie voordeden.

Overzicht van de belangrijkste activiteiten van het SIT Centraal Comité

Standaardisatie

Wat een IT-standaard is – zou een IT-standaard moeten worden – zou geen IT-standaard moeten zijn

C-programmeertaal ontwikkeld door Dennis Ritchie begin jaren zeventig om het UNIX-besturingssysteem te creëren. C blijft de meest gebruikte taal voor het schrijven van systeemsoftware, en C wordt ook gebruikt voor het schrijven van applicaties. Programmeren voor beginners.

Eigenaardigheden

De programmeertaal C heeft de volgende hoofdkenmerken:

  • Focus op het procedurele programmeerparadigma, met het gemak van programmeren in een gestructureerde stijl, is een goed pluspunt om te leren C.
  • Toegang tot het hardwareniveau door het gebruik van pointers om geheugenlocaties aan te duiden.
  • Parameters worden altijd per waarde aan een functie doorgegeven, niet per referentie.
  • Reikwijdte van lexicale variabelen (maar ondersteunt geen afsluitingen of functies die binnen andere functies zijn gedefinieerd.)
  • Een standaardset bibliotheekprogramma's die functies bieden die nuttig maar niet strikt noodzakelijk zijn.
  • Gebruikt de taalpreprocessor, de C-preprocessor, voor taken zoals het definiëren van macro's en het opnemen van meerdere broncodebestanden.
  • "O"-prestaties voor alle operators

De functionaliteit van de programmeertaal C wordt gegarandeerd door ANS/ISO C99 C89/90 en regelgeving die expliciet bepaalt wanneer de compiler (of omgeving) diagnostiek uitvoert. Programmeren voor dummies. Ook geven de documenten aan welk gedrag verwacht mag worden van code geschreven in de programmeertaal C die voldoet aan de standaard.
De volgende code produceert volgens de standaard bijvoorbeeld ongedefinieerd gedrag.

#include #include int main (void) ( char *s = "Hallo wereld!\\n"; strcpy (s, s+1); /* waarschijnlijk wilde de programmeur het eerste teken uit de string S = S + verwijderen 1, */ retour 0;

Opmerking: de stijl van inspringen in programmacode varieert afhankelijk van de voorkeuren van programmeurs. Zie Inspringstijl voor meer informatie in het gedeelte over de basisprincipes van programmeren.
"Ongedefinieerd gedrag" betekent dat het programma als gevolg daarvan alles kan doen, inclusief werken zoals de programmeur het bedoeld heeft, of fatale fouten produceren elke keer dat het wordt uitgevoerd, of slechts enkele crashes veroorzaken elke keer dat het programma tweeënveertig seconden wordt uitgevoerd, of crashes veroorzaken wanneer de computer opnieuw opstart, enz., tot in het oneindige.
Sommige compilers houden zich in hun standaardmodus aan geen enkele standaard, waardoor er veel programma's worden geschreven die alleen compileren met een bepaalde versie van de compiler en op een bepaald platform (Windows, Linux of Mac).
Elk programma dat alleen in de standaard C-programmeertaal is geschreven, zal onveranderd compileren op elk platform dat over de juiste C-compiler-implementaties beschikt.
Hoewel C gewoonlijk een taal op hoog niveau wordt genoemd, is het slechts een taal op hoog niveau in vergelijking met de assembleertaal, maar het is een aanzienlijk lager niveau dan de meeste andere programmeertalen. Maar in tegenstelling tot de meeste geeft het de programmeur de mogelijkheid om de inhoud van het computergeheugen volledig te controleren. C biedt geen tools voor het controleren van arraygrenzen of het automatisch verzamelen van afval.
Begeleiding bij geheugenbeheer geeft de programmeur meer vrijheid om de programmaprestaties af te stemmen, wat vooral belangrijk is voor programma's zoals apparaatstuurprogramma's. Het maakt het echter ook gemakkelijk om per ongeluk code te creëren met fouten die voortvloeien uit foutieve geheugenbewerkingen, zoals bufferoverflows. Er zijn verschillende tools gemaakt om programmeurs te helpen deze fouten te vermijden, waaronder bibliotheken voor het uitvoeren van array-bounds checking en garbage collection, en broncode-inspectiebibliotheken. Het doelbewuste gebruik van programma's die helemaal opnieuw in C zijn geschreven en die een buffer-overflow-mechanisme bevatten, komt veel voor bij veel computervirussen en is erg populair onder hackers die computerwormen ontwikkelen.
Sommige van de geïdentificeerde tekortkomingen van C werden overwogen en in aanmerking genomen in nieuwe programmeertalen afgeleid van C. De programmeertaal Cyclone heeft functies die bescherming bieden tegen foutieve geheugenbewerkingen. C++ en Objective C bieden constructies die zijn ontworpen om objectgeoriënteerd programmeren te vergemakkelijken. Java en C # voegden objectgeoriënteerde programmeerconstructies toe, evenals hogere abstractieniveaus, zoals automatisch geheugenbeheer.

Verhaal
De initiële ontwikkeling van C vond plaats tussen 1969 en 1973 (volgens Ritchie de meest turbulente periode in 1972). Het heette "C" omdat veel van de kenmerken waren afgeleid van een voorgangerstaal genaamd B, die zelf Bon werd genoemd, naar de vrouw van Bonnie Ken Thompson.
In 1973 was de programmeertaal C krachtig genoeg geworden om het grootste deel van de kernel van het Unix-besturingssysteem te herschrijven. C Ter vergelijking: het Multics-besturingssysteem is geïmplementeerd in de A-taal, Tripos OS (geïmplementeerd in de BCPL-taal). In 1978 publiceerden Ritchie en Brian Kernighan de "C Programming Language" (het zogenaamde "white paper", of K&R. ) jarenlang diende dit boek als specificatie voor de taal, en zelfs vandaag de dag is deze editie erg populair als handleiding en leerboek.
C werd vanaf de jaren tachtig erg populair buiten Bell Labs en was een tijdlang de dominante taal in programmeersystemen en -toepassingen voor microcomputers. Het is nog steeds de meest gebruikte systeemprogrammeertaal, en één van de meest gebruikte programmeertalen in computers voor wetenschappelijk onderwijs.
Eind jaren tachtig werkten Bjarne Stroustrup en anderen bij Bell Labs aan het toevoegen van objectgeoriënteerde constructies aan C. De taal die ze samen met de eerste Cfront-compiler ontwikkelden, heette C++ (wat de vraag vermijdt wat een opvolger van "B" en "C" moet "D" of "P" zijn). Momenteel is C++ de taal die het meest wordt gebruikt voor commerciële toepassingen op het Microsoft Windows-besturingssysteem, hoewel C nog steeds erg populair is in de Unix-wereld.

Versies C

K&R C (Kernighan en Ritchie C)
C is sinds de oprichting bij Bell Labs voortdurend geëvolueerd. In 1978 werd de eerste editie van Kernighan en Ritchie's The C Programming Language gepubliceerd. Het introduceerde de volgende functies voor bestaande versies van C:

  • structuurgegevenstype
  • lang int-gegevenstype
  • niet-ondertekend int-gegevenstype
  • De =+ operator werd gewijzigd in += , enzovoort (aangezien de =+ operator lexicale analysatorfouten bleef veroorzaken in C).

Jarenlang werd de eerste editie van "The C Programming Language" op grote schaal gebruikt als de de facto taalspecificatie. De versie van C die in dit boek wordt beschreven, wordt doorgaans "K&R C" genoemd (de tweede editie omvat de ANSI C-standaard, die hieronder wordt beschreven).
K&R C wordt vaak beschouwd als het kerngedeelte van de taal die nodig is voor een C-compiler, aangezien niet alle compilers die momenteel in gebruik zijn, zijn bijgewerkt om ANSI C in zijn geheel volledig te ondersteunen, en redelijk goed geschreven K&R C-code ook correct is. een ANSI-standpunt C. Daarom wordt K&R C beschouwd als de kleinste gemene deler waaraan programmeurs zich moeten houden om maximale draagbaarheid te bereiken. De bootstrapversie van de GCC-compiler, xgcc, is bijvoorbeeld geschreven in K&R C. Dit komt omdat veel van de door GCC ondersteunde platforms niet over een goede ANSI C GCC-compiler beschikten, dus er is slechts één basisimplementatie van K&R C geschreven.
ANSI C wordt nu echter ondersteund door bijna alle veelgebruikte compilers. De meeste C-code wordt nu helemaal opnieuw geschreven om te profiteren van taalfuncties die verder gaan dan de reikwijdte van de oorspronkelijke K&R-specificatie.

ANSI C en ISO C
In 1989 werd C voor het eerst officieel gestandaardiseerd door ANSI in ANSI X3.159-1989 "The C Programming Language". Een van de doelen van ANSI C was het creëren van een verbeterde K&R C. De normcommissie nam echter ook een aantal nieuwe functies op die veel innovaties introduceerden dan normaal gesproken bij het programmeren hadden plaatsgevonden bij het standaardiseren van de taal.
Sommige van de nieuwe functies zijn "onofficieel" aan de taal toegevoegd na de publicatie van K&R, maar vóór de start van het ANSI C-proces.

  • lege functies
  • functies die struct- of union-gegevenstypen retourneren
  • ongeldig * gegevenstype
  • const-kwalificatie om een ​​object alleen-lezen te maken
  • struct-veldnamen in een aparte naamruimte voor elk structuurtype
  • geheugentoewijzing voor struct-gegevenstypen
  • stdio-bibliotheek en enkele andere standaardbibliotheekfuncties kwamen beschikbaar in de meeste implementaties (deze bestond al, tenminste één implementatie ten tijde van de creatie van K&R C, maar het was niet echt een standaard en werd daarom niet gedocumenteerd in het boek)
  • stddef.h headerbestand en een aantal andere standaard headerbestanden.

Tijdens het ANSI-standaardisatieproces zijn verschillende functies aan C toegevoegd, met name functieprototypen (geleend van C ++). ANSI C heeft ook een standaardset bibliotheekfuncties opgesteld.
De programmeertaal C volgens de ANSI-standaard, met kleine wijzigingen, werd onder ISO 9899 als ISO-standaard overgenomen. De eerste ISO-editie van dit document werd in 1990 gepubliceerd (ISO 9899:1990).

C 99
Na het ANSI-standaardisatieproces is de C-taalspecificatie al enige tijd relatief ongewijzigd gebleven, terwijl C++ zich bleef ontwikkelen. (In feite creëerde Regulatory Amendment 1 in 1995 een nieuwe versie van de C-taal, maar deze versie wordt zelden erkend.) De normen werden echter eind jaren negentig herzien, wat leidde tot de creatie van ISO 9899:1999, die werd gepubliceerd in 1999 jaar. Deze standaard wordt gewoonlijk "C99" genoemd. Het werd in maart 2000 aangenomen als ANSI-standaard.
Nieuwe functies toegevoegd in C99 zijn onder meer:

  • ingebouwde functies
  • het vrijgeven van de beperking op de locatie van variabele declaratie (volgens C++)
  • Naast verschillende nieuwe gegevenstypen, waaronder long long int (om de problemen te verminderen die gepaard gaan met de overgang van 32-bits naar 64-bits processors die boven veel oudere programma's opdoemen en die de veroudering van de x86-architectuur voorspelden), zijn expliciete Booleaanse gegevens type, en een type dat complexe getallen vertegenwoordigt
  • arrays met variabele lengte
  • Officiële ondersteuning voor commentaar dat begint met "/ /" zoals in C++ (wat veel C89-compilers al ondersteunden als een niet-ANSI-extensie)
  • verschillende nieuwe bibliotheekfuncties, waaronder snprintf
  • verschillende nieuwe headerbestanden, waaronder stdint.h

De belangstelling voor het ondersteunen van nieuwe C99-functies is gemengd. Hoewel GCC en verschillende commerciële compilers de meeste nieuwe functies van C99 ondersteunen, doen compilers van Microsoft en Borland dat niet, en deze twee bedrijven lijken niet geïnteresseerd in het toevoegen van dergelijke ondersteuning.

Programma "Hallo wereld!" in C-taal
De volgende eenvoudige applicatie voert "Hallo, Wereld" uit naar standaarduitvoer (meestal het scherm, maar kan een bestand of een ander hardwareapparaat zijn). Deze programmawijziging verscheen voor het eerst op K&R.

#erbij betrekken int main(void) ( printf("Hallo wereld!\\n"); //comment return 0; /* commentaar op verschillende regels */ )

Tekst die geen programma is, maar als hint voor de programmeur dient, wordt doorgaans als commentaar geschreven. // enkele regel of /* meerdere regels*/

Anatomie van een C-programma
Een C-programma bestaat uit functies en variabelen. C functioneert als Fortran-subroutines en -functies of Pascal-procedures en -functies. De eigenaardigheid van de hoofdfunctie is dat het programma begint met de uitvoering van de hoofdfunctie. Dit betekent dat elk C-programma een hoofdfunctie moet hebben.
De hoofdfunctie roept doorgaans andere functies aan die helpen bij het uitvoeren van zijn werk, zoals printf in het bovenstaande voorbeeld. De programmeur kan sommige van deze functies schrijven, en andere kunnen vanuit de bibliotheek worden aangeroepen. In het bovenstaande voorbeeld geeft return 0 de retourwaarde voor de hoofdfuncties. Dit geeft een succesvolle uitvoering aan van het programma om de programmashell aan te roepen.
Een C-functie bestaat uit een retourtype, een naam, een lijst met parameters (of leegte tussen haakjes als die er niet zijn) en een functietekst. De syntaxis van de lichaamsfunctie is gelijk aan de samengestelde operator.

Controlestructuren

Samengestelde operators
Samengestelde operatoren in C hebben de vorm
{ }
en worden gebruikt als hoofdgedeelte van een functie en op plaatsen waar meerdere acties in één blok worden verwacht.

Operator voor aangifte
Typ verklaring
;
is de uitdrukking van de verklaring. Als er geen uitdrukking is, wordt zo'n verklaring een lege verklaring genoemd.

Selectie-operator
C heeft drie soorten selectie-instructies: twee soorten if- en switch-instructies.
Twee soorten als,
als()
{
}
of
als()
{
}
anders
{
}
Als in een if-declaratie de expressie tussen haakjes niet nul of waar is, gaat de controle over naar de instructie die volgt op if . Als er een else in de clausule staat, wordt de controle doorgegeven aan de volgende reeks acties na de else als de expressie tussen haakjes nul of false is.
Switch control-instructie - in dit geval is het noodzakelijk om verschillende waarden op te geven die de variabele die als selectievariabele wordt gebruikt, kan aannemen, en die een geheel getal moet hebben. Voor elke waarde van een keuzevariabele kunnen meerdere acties worden uitgevoerd die worden geselecteerd. Elke actietak kan worden gemarkeerd met een case-tag, die lijkt op het trefwoord case, gevolgd door een constante expressie en vervolgens een dubbele punt (:). Geen enkele waarde die verband houdt met schakelconstanten kan dezelfde waarde hebben. Er kan ook maximaal één standaardlabel zijn gekoppeld aan swith; controle wordt overgebracht naar het standaardlabel als geen van de constante waarden overeenkomt met de selectievariabele, die tussen haakjes verschijnt na switch . Als er in het onderstaande voorbeeld een overeenkomst is tussen de selectievariabele en de constante, wordt de reeks acties na de dubbele punt uitgevoerd

Schakelaar () ( case: printf(); break; case: printf(); break; standaard: )

Herhalingen (cycli)
C heeft drie vormen van lusoperatoren:

Doe ( ) terwijl ();

terwijl () ( ) voor (; ;) ( )
In while- en do-instructies wordt de hoofdtekst herhaaldelijk uitgevoerd zolang de waarde van de expressie niet nul of waar blijft. Gedurende een tijdje wordt de voorwaarde elke keer gecontroleerd voordat de uitvoering begint; for do wordt de voorwaarde gecontroleerd nadat de lusbody is uitgevoerd.

Als alle drie de expressies aanwezig zijn in de for-instructie

Voor (e1; e2; e3) s;

dan is dit gelijk aan

E1;

terwijl (e2) ( s; e3; )
Elk van de drie expressies in de for-lusinstructie kan worden weggelaten. De afwezigheid van een tweede expressie zorgt ervoor dat de while-voorwaardetest altijd niet-null is, waardoor een oneindige lus ontstaat.
Jump-operators
Onvoorwaardelijke sprongoperator. Er zijn vier soorten jump-instructies in C: goto, continue, break en return.<метка>;
De goto-instructie ziet er als volgt uit:
ga naar

De ID moet verwijzen naar een label dat zich in de huidige functie bevindt. De controle wordt overgedragen aan de gemarkeerde operator.

De instructie continue kan alleen verschijnen binnen een lus-iteratie en dwingt je om de resterende stappen op de huidige locatie over te slaan en door te gaan naar de volgende stap van de lus. Dat wil zeggen, in elk van de uitspraken
While (expressie) ( /* ... */ continue; ) do ( /* ... */ continue ; ) while (expressie); for (optioneel-expr; optexp2; optexp3) ( /* ... */ doorgaan ; )
De break-instructie wordt gebruikt om een ​​for-, while-, do- of switch-lus te verlaten. De controle wordt overgedragen aan de operator na de operator waarin de actie werd onderbroken.

  • De functie keert terug naar de locatie vanwaar de waarde is aangeroepen met behulp van de return-instructie. Return wordt gevolgd door een expressie waarvan de waarde wordt geretourneerd naar de plaats waar deze werd aangeroepen. Als een functie geen return-instructie bevat, is deze gelijk aan return zonder expressie. In ieder geval is de retourwaarde niet gedefinieerd.
  • Operatoraanvraagorder in C89
  • () ->. + + - (CAST) Postfix-operatoren
  • + + - * & ~! + - Grootte van unaire operatoren
  • << >* /% Multiplicatieve operators
  • < <= >+ - Additieve operatoren
  • > Ploegenoperatoren
  • >= Relationele operatoren
  • =! == Gelijkheidsoperatoren
  • & Bitsgewijs en
  • ^ Bitsgewijze XOR
  • | Bitwise inclusief, of
  • & & Logisch en
  • = += -= *= /= %= <<= >>=
  • | | Logisch of
  • ?: Voorwaardelijke operator

& = | = ^ Toewijzingsoperatoren =
, Komma-operator
Gegevensverklaring Elementaire gegevenstypen header-bestanden definiëren de bereiken van de belangrijkste gegevenstypen. De reeksen float, double en long double worden over het algemeen vermeld in de IEEE 754-standaard.

Arrays
Als een variabele wordt gedeclareerd met vierkante haakjes () samen met de aanduiding, wordt een array geacht te zijn gedeclareerd. Strings zijn arrays van karakters. Ze eindigen met een nulteken (weergegeven in C als "\0", het nulteken).
Voorbeelden:
int mijnvector ;
char mystring;
float mymatrix = (2,0, 10,0, 20,0, 123,0, 1,0, 1,0)
char-lexicon; /* 10.000 regels, die elk maximaal 300 tekens kunnen bevatten. */
int a;
In het laatste voorbeeld wordt een array van arrays gemaakt, maar deze kan voor de meeste doeleinden als een multidimensionale array worden beschouwd. Om toegang te krijgen tot de 12 int-waarden van array "a", kunt u de volgende oproep gebruiken:

A A A A
A A A A
A A A A

Wegwijzers
Als een variabele in de declaratie wordt voorafgegaan door een asterisk (*), wordt deze een pointer.
Voorbeelden:
int *pi; /* verwijzing naar geheel getal */
int *api; /* reeks pointers van het type geheel getal */
char **argv; aanwijzer naar aanwijzer naar char */

De waarde in het adres wordt opgeslagen in een pointervariabele en is in het programma toegankelijk door de pointervariabele met een asterisk aan te roepen. Als bijvoorbeeld de eerste instructie in het bovenstaande voorbeeld *pi een int is. Dit wordt het "derefereren" van de aanwijzer genoemd.
Een andere operator, & (ampersand), de adresoperator genoemd, retourneert het adres van een variabele, array of functie. Dus met bovenstaande in gedachten
int ik, *pi; /* declareer een geheel getal en een verwijzing naar een geheel getal */
pi =

I en *pi kunnen door elkaar worden gebruikt (tenminste totdat pi op iets anders is ingesteld).

Snaren
Om met strings te werken hoef je de bibliotheek niet op te nemen, omdat deze in de standaardbibliotheek zit C, zijn er al functies aanwezig om strings en gegevensblokken te verwerken alsof het char-arrays zijn.

De belangrijkste stringfuncties:

  • strcat(dest, source) - voegt de tekenreeksbron toe aan het einde van de tekenreeks dest
  • strchr(s, c) - vindt de eerste omzetting van karakter c in string s en retourneert een pointer ernaar of een nulpointer als c niet wordt gevonden
  • strcmp(a, b) - vergelijkt strings en a b (lexicale volgorde); retourneert negatief als a b kleiner is, 0 indien gelijk, positief indien groter.
  • strcpy(dest, source) - kopieert de tekenreeksbron naar de tekenreeksdest
  • strlen(st) - geeft de lengte van de tekenreeks st terug
  • strncat(dest, source, n) - voegt maximaal n tekens uit de bronreeks toe aan het einde van de dest-reeks; tekens na het null-teken worden niet gekopieerd.
  • strncmp(a, b, n) - vergelijkt maximaal n tekens uit de string en a b (lexicale volgorde); retourneert negatief als a b kleiner is, 0 indien gelijk, positief indien groter.
  • strncpy(dest, source, n) - kopieert maximaal n tekens van de bronreeks naar de dest-reeks
  • strrchr(s, c) - vindt de laatste instantie van teken c in string s en retourneert een pointer ernaar of een nulpointer als c niet wordt gevonden

Minder belangrijke stringfuncties:

  • strcoll(s1, s2) - vergelijk twee strings volgens de locale van de bestelde reeks
  • strcspn(s1, s2) - retourneert de index van het eerste teken in s1 , die overeenkomt met elk teken in s2
  • strerror(err) - retourneert een string met een foutmelding die overeenkomt met de code in err
  • strpbrk(s1, s2) - retourneert een pointer naar het eerste teken in s1 dat overeenkomt met elk teken in s2, of een nulpointer als deze niet wordt gevonden
  • strspn(s1, s2) - retourneert de index van het eerste teken in s1 dat overeenkomt met het niet-teken in s2
  • strstr(st, subst) - retourneert een pointer naar de eerste keer dat de string subst voorkomt in st, of een nulpointer als zo'n substring niet bestaat.
  • strtok(s1, s2) - retourneert een verwijzing naar het token in s1, gescheiden door tekens in s2.
  • strxfrm(s1, s2, n) - converteert s2 naar s1 met behulp van de locale regels

Bestands-I/O In de programmeertaal C worden invoer en uitvoer tot stand gebracht via een groep functies in de standaardbibliotheek. In ANSI/ISO C zijn de functies die zijn gedefinieerd in koptekst.
Drie standaard I/O-streams
stdin standaardinvoer
standaarduitvoer
stderr standaardfout

Deze streams worden automatisch geopend en gesloten door de runtime; ze hoeven niet expliciet te worden geopend.
Het volgende voorbeeld laat zien hoe een typisch programma voor het filteren van brieven is opgebouwd:

//Header-bestanden, bijvoorbeeld #include

Argumenten doorgeven aan de opdrachtregel
De parameters die op de opdrachtregel worden gepresenteerd, worden doorgegeven aan het C-programma met twee vooraf gedefinieerde variabelen: het aantal opdrachtregelargumenten wordt opgeslagen in de argc-variabele, en de individuele argumenten worden opgeslagen als karakterarrays in de array-aanwijzer argv. Start het programma dus vanaf de opdrachtregel in het formulier
Myprog p1 p2 p3
zal resultaten opleveren die vergelijkbaar zijn met (let op: er is geen garantie dat individuele rijen aaneengesloten zijn):
Individuele parameterwaarden zijn toegankelijk via argv, argv of argv.

C-bibliotheken
Veel functies van de C-taal worden geleverd door de C-standaardbibliotheek. De "gehoste" implementatie biedt alle C-bibliotheken (de meeste implementaties worden gehost, maar sommige zijn niet bedoeld voor gebruik met het besturingssysteem). Toegang tot de bibliotheek wordt onder meer bereikt door standaard headers via de #include preprocessor-richtlijn. Zie ANSI C-standaardbibliotheken, GCC (GNU C Compiler).

C++ programmeertaal

Laatste update: 28/08/2017

De programmeertaal C++ is een gecompileerde, statisch getypeerde programmeertaal voor algemeen gebruik die geschikt is voor het creëren van een grote verscheidenheid aan toepassingen. Tegenwoordig is C++ een van de meest populaire en wijdverspreide 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 (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.

Basisprincipes van programmeren
Basisprincipes van programmeren, basistermen en concepten

De videocursus laat studenten kennismaken met de basisprincipes van programmeren, basistermen en concepten. Het leert u hoe u algoritmen kunt ontwikkelen en geeft u echte ervaring met het maken van webproducten. De lessen omvatten een overzicht van de huidige programmeertalen en -gebieden, helpen studenten bij het kiezen van de talen en gebieden die voor hen het meest interessant zijn, en bieden materialen en instructies voor verdere professionele ontwikkeling.

Les 3. Eerste programma

Een programmeertaal kiezen. De browser voorbereiden. Programma "Hallo wereld!"

Les 4. Variabelen

Een handige code-editor installeren. Inleiding tot variabelen. Een eenvoudige rekenmachine.

Les 5. Gegevenstypen

Gegevenstypen. Bewerkingen met verschillende soorten gegevens. Conversie van gegevenstypen.

Les 6. Algoritmen en stroomdiagrammen

Algoritmisch denken. Visuele stroomdiagrammen.

Les 7. Filiaalexploitant als

Opties in het programma selecteren. Filiaalexploitant indien. Een spel vol raadsels.

Les 8. Logische bewerkingen

Complexe selectievoorwaarden. Logisch EN, OF. Spel "Boze Vogels".

Les 9. Doen, while-loops

Do- en while-lussen. Russisch roulette spelen.

Les 10. For-lus

De for-lus. Financiële rekenmachine.

Les 11. Arrays

Grote datasets en arrays. Roulettespel.

Les 12. Functies

Functies. Voorbereiden om het spel “Black Jack (21)” te schrijven.

Les 13. Spel "Black Jack". Deel 1

Een volledig spel schrijven. De basis is het delen van kaarten en het tellen van punten.

Les 14. Spel "Black Jack". Deel 2

Voltooiing van het schrijven van het spel. Bepaling van de resultaten en de winnaar.

Les 15. Programmeercarrière

Herziening van de belangrijkste richtingen in het programmeren. Hoe kies je een programmeertaal? Wat moet je verder studeren?

Inleiding tot Git
Git-basisprincipes

In de loop van 13 video's leiden we je door de basisprincipes van het Git-versiecontrolesysteem. Laten we eens kijken waarom het belangrijk is bij moderne ontwikkeling en samenwerkend programmeren. Laten we kennis maken met de basisconcepten van Git: repositories, commits, branches en tags. Laten we de basisbewerkingen leren: een repository maken en klonen, branches samenvoegen, de wijzigingsgeschiedenis opvragen en nog veel meer. Laten we eens kijken hoe we huiswerk kunnen indienen met Git. Dit is een basiscursus, waarna je elke programmeertaal kunt leren. Daarnaast wordt u voorbereid op het sollicitatiegesprek, waarbij een aantal vragen veelal gericht zijn op het versiebeheersysteem.

Les 1. Inleiding tot versiebeheersystemen

Wat is een versiebeheersysteem?
Soorten versiebeheersystemen
Git en zijn voordelen
Documentatie

Les 2. Werken met de opdrachtregel

Wat is de opdrachtregel?
Waarom is de opdrachtregel belangrijk?
Hoe de opdrachtregel openen?
Handige commando's

Les 3. Lokaal werken met een Git-repository

Inleiding tot de consoleclient
Git-installatie
Initialiseren van de repository
Een repository klonen
Grafische git-clients

Les 4. Basishandelingen

Indexering
Wijzigingen publiceren
Betreft
Indexering annuleren
Huidige status

Les 5. Geschiedenis van het git-project

Geschiedenis van veranderingen
Terugdraaien volgens projectgeschiedenis
Credits wijzigen: geef de schuld
.gitignore-bestanden negeren
Website gitignore.io
Mappen bewaren.keep

Les 6. Takken

Filiaalbeheer
Vertakkingen maken en verwijderen
Wisselen tussen vestigingen
Conflictmethoden en hun oplossing
git samenvoegen

Les 7: Een externe Git-repository maken

Git-hosting (GitHub, GitLab, Bitbacket)
Je eigen bare-git-repository maken
Registreer op GitHub
Wijzigingen publiceren naar een externe opslagplaats

Les 8. Verwijderde takken

Namen van opslagplaatsen
Meerdere opslagplaatsen in één project
.git/config
Het beheren van vestigingen op een externe repository

Les 9. Versiebeheer

Versiebeheermethoden
Tags en hun relatie met commits
Een label toevoegen
Een label verwijderen
Een tag beheren op een externe opslagplaats

Les 10. Samenvoegen en overboeken

Wij voegen de wijzigingen samen. git samenvoegen
Wij verplaatsen de takken. git rebase
Verhuisverplichtingen. git kersenpluk
We voegen de commit samen tot één. git squash
Haken
Bijnamen

Les 11. Gitflow

Hoe wordt het gebruikt en waarom?
Testcycli
Mogelijk blauw/groen
Laat takken los
Hotfixes

Les 12. SSH

SSH-protocol
Waarom wordt het gebruikt?
Sleutels maken
Doorsturen
SSH-agent
Bestanden kopiëren via SSH
Windows: Git voor Windows
SSH gebruiken met Git

Les 13. Huiswerk inleveren via Git

Basisbeginselen van databases. 20 lessen.
Databaseontwerp en SQL-query's

Databases (DB's) zijn systemen voor gegevensopslag en -verwerking die toegankelijk zijn via de SQL-taal (Structured Query Language). Elke moderne website, game of desktopapplicatie heeft gegevensopslag nodig. Op dit moment zijn er veel verschillende databasebeheersystemen (DBMS), waarvan MySQL de meest populaire is. “Database Basics” bestaat uit 20 intensieve videolessen (elk 10 minuten), waarin we alle fasen van het databaseontwerp doornemen aan de hand van het voorbeeld van een online winkel die de SQL-querytaal gebruikt. Na deze cursus kunt u verschillende databases gebruiken, zoals MS SQL en Postgre SQL, omdat de SQL-syntaxis daarvoor vrijwel hetzelfde is.

Les 1: Relationele databases

Wat is het verschil tussen een database en een DBMS; welke databases relationeel worden genoemd; overzicht van moderne DBMS.

Les 2. Een DBMS installeren

Installatie van het MySql DBMS en de grafische applicatie Mysql Workbench.

Les 3. Databaseontwerp, normale formulieren

Gegevensontwerp in Excel; normale vormen; primaire sleutel.

Les 4. SQL CREATE-opdracht

Tabellen maken in de MySql Workbench GUI; CREATE-opdracht; gegevenstypen; werk in de console.

Les 5. SQL INSERT-opdracht

Tabellen vullen met gegevens met behulp van een grafische interface; INSERT-opdracht; AUTOMATISCHE VERHOGING.

Les 7. SQL-opdrachten DISTINCT, ORDER BY, LIMIT

Gegevens ontvangen en filteren met behulp van SQL-opdrachten DISTINCT en LIMIT; sorteren met behulp van het ORDER BY-commando.

Les 9: Gegevensconsistentie

Het concept van consistentie of consistentie van gegevens.

Les 10. Buitenlandse sleutel

Het concept van een externe sleutel en beperkingen op kolomwaarden; BUITENLANDSE BELANGRIJKSTE BEPERKINGEN.

Les 11. Tabellen maken met een veel-op-veel-relatie

Een winkelwagen toevoegen aan de database van de online winkel.

Les 12. Samengestelde primaire sleutel

Een samengestelde primaire sleutel gebruiken bij het ontwerpen van een tabel met een veel-op-veel-relatie.

Les 13. Gegevens uit meerdere tabellen samenvoegen

Gegevens ophalen uit verschillende onderling gerelateerde tabellen; inconsistentie van de aanpak met behulp van verschillende SELECT's.

Les 14. INNER JOIN-operator

Gegevens uit meerdere tabellen samenvoegen met behulp van de INNER JOIN-operator.

Les 15. Operatoren LEFT JOIN, RIGHT JOIN

Gegevens uit meerdere tabellen samenvoegen met behulp van LEFT JOIN- en RIGHT JOIN-operatoren.

Les 16. UNION-operator

Het combineren van de resultaten van meerdere SQL-query's met behulp van de UNION-operator.

Les 17. Aggregatiefuncties

Aggregatiefuncties COUNT, SUM, MIN, MAX.

Les 18. GROEPEREN OP operator

Groepeer een geselecteerde set rijen met behulp van de GROUP BY-clausule.

Les 19. Indexen

Filteren in GROUP BY met HAVING; het verhogen van de snelheid van het uitvoeren van zoekopdrachten met behulp van indexen.

Les 20. Transacties

Transactieconcept; TRANSACTIE-verklaring; ACID-vereisten voor het transactiesysteem.

Linux. Werkstation. 1 maand.
Oefen met het beheren van Linux OS op een computer

GNU/Linux is een populair besturingssysteem dat toonaangevend is op de markt voor serverhardware en ook wordt gebruikt als ingebed besturingssysteem in industriële en consumentenapparatuur, en zelfs als desktopsoftware. GNU-componenten worden ook gebruikt in MAC OS X, en GNU/Linux heeft ook invloed op Windows. Bekendheid met Linux is noodzakelijk voor een systeembeheerder, tester, webprogrammeur, en elke ontwikkelaar die aanspraak maakt op een midden- of hogere status. Deze cursus behandelt de basisprincipes van het werken in Linux: de basisprincipes van het werken in de Linux-shell, het beheren van gebruikers en bestandsrechten, reguliere expressies en het schrijven van scripts in bash, het werken met processen en het beheren van boot en services in Linux. Inzicht in de basisprincipes van programmeren, getalsystemen (binair, octaal, hexadecimaal) en Booleaanse logica

Les 1. Introductie en installatie

Inleiding tot GNU/Linux. Wat is GNU, Linux en UNIX. Virtualisatie. Ubuntu op een virtuele machine installeren. Basis Linux-functies

Les 2. Werken in grafische en consolemodus

Console en grafische modus in Linux; console-opdrachten; bestanden maken en bewerken.

Les 3. Bestanden en machtigingen in Linux

Gebruikers en rechten in Linux; werken met bestanden; het uitvoeren van bewerkingen namens de superuser.

Les 4. Reguliere expressies

Reguliere expressies. Zoekopdracht. sed.

Les 5. Bash-programmering

Syntaxis. Teams. Variabelen. Controlestructuren. Enkele eenvoudige scripts. Geplande taken uitvoeren met cron

Les 6. Webservices

Linux-netwerkmogelijkheden. Webdiensten. Nginx, Apache2. Laten we coderen. Netwerkfilter netfilter en hulpprogramma iptables.

Les 7. Inleiding tot Git

Inleiding tot Git.

Les 8. SOA en introductie tot Docker

Monolithische en SOA-applicatiearchitectuur. Inleiding tot Docker

Les 1. Inleiding

Inleiding tot de taal, een korte geschiedenis. Software-overzicht. Basisconcepten van taal. Variabelen en gegevenstypen

Les 2. Voorwaarden en lussen

Voorwaarden. Booleaanse algebra en binaire berekeningen. Cycli. Loop Control en Switch-verklaring

Les 3. Functies, arrays en pointers

Functies. Wijzers. Arrays. Multidimensionale arrays

Les 4. Snaren, structuren en werken met geheugen

Lijnen. Datastructuren. Bestandssysteem. Dynamische geheugentoewijzing

De cursus is bedoeld voor zowel beginners als voor degenen die al andere programmeertalen of de taal C++ beheersen, maar op een onvoldoende niveau, evenals voor degenen die geen duidelijk inzicht hebben in de organisatie van gegevensopslag en -verwerking in gecompileerde computerprogramma's . C++ is een taal voor algemeen gebruik en door de eigenschappen van talen op hoog en laag niveau te combineren, kunt u de meest uitgebreide reeks problemen oplossen die zich bij het programmeren voordoen. De cursus laat de student vrij volledig kennismaken met de mogelijkheden van de C++-taal die inherent is aan de taal om deze doelen te bereiken.

Les 1. Gecompileerde taal. Stadia van vertaling en assemblage van programma's

  1. Waarom heb je C++ nodig?
  2. Ontwikkeltools in C++.
  3. Hoe een gecompileerde taal werkt.
  4. Stadia van het uitzenden van een programma.
  5. Hoe het buildscript werkt.
  6. Analyse van huiswerk.

Les 2. Namen in het programma. Gegevens, typen, functies en variabelen

  1. Namen, typen en variabelen.
  2. Variabele en getalweergave.
  3. Berekenbaarheid.
  4. Functie. Concept en betekenis.
  5. Functies en hun argumenten.
  6. Eenvoudige arrays.
  7. Analyse van huiswerk.

Les 3. Een algoritme construeren in C++

  1. Blokken. Het concept van een algoritme Naamruimte.
  2. Voorwaardelijke bewerkingen.
  3. Constante meervoudige selectie.
  4. Cyclische voorwaardelijke werking terwijl.
  5. Iteratiebeheer (herhaalbaarheid van de cyclus).
  6. Telcyclus.
  7. Uitzonderlijke situaties.
  8. Analyse van huiswerk.

Les 4. Procedureel programmeren

  1. Een projectskelet samenstellen voor Qt Creator.
  2. We krijgen toegang tot het gegevensbestand.
  3. Formaathack: het ontcijferen van de gegevensopslagmethode.
  4. Decodering van PNM/PGM-formaat.
  5. Zijgegevenstransformaties: afbeeldingsafmetingen lezen.
  6. Constructie van het uitvoerhistogram en de gegevensuitvoer.
  7. Analyse van een programmaconcept geschreven in procedurele stijl.

Een cursus voor beginnende ontwikkelaars die bekend zijn met de basisprincipes van de taal C of C++. Helpt u basisgegevensstructuren en basisalgoritmen te begrijpen. Geeft een algemeen inzicht in de processen binnen het programma en basisvaardigheden bij het bouwen van het werk van algoritmen. De cursus is niet gebonden aan een specifieke programmeertaal, en ondanks dat alles wordt uitgelegd aan de hand van C als voorbeeld, kan de kennis in elke imperatieve programmeertaal worden toegepast.

Les 1. Introductie en kennismaking

Les 2. Complexiteit van algoritmen en eenvoudige algoritmen

Les 4. Arrays

Les 5. Complex sorteren van arrays

Les 6. Stapels, wachtrijen en lijsten

Les 7. Dynamische datastructuren

Les 8. Bomen

Les 9. Grafieken

Les 10. Hashtabellen

Les 11. Inleiding tot cryptografie

Objectgeoriënteerd programmeren. 1 maand.
Duik in OOP

De cursus laat studenten kennismaken met de beste programmeertechnieken in C++. De basisprincipes van effectief gebruik van objectgeoriënteerd programmeren voor het schrijven van programma's zullen worden behandeld, evenals typische aspecten van de werking van de stream I/O-bibliotheek. Tijdens de training schrijven studenten een volwaardig spel met behulp van de opgedane kennis. De cursus is bedoeld voor beginnende C++-programmeurs die niveau 1 - procedureel programmeren hebben voltooid.

Les 1. Benoemde staten

Namen exporteren. Overbelasting van de functienaam (algemeen).
Functies opslaan in een staat. Geef de beschikbaarheid van de naamruimte op. Trefwoorden openbaar en privé. We introduceren het concept van een object. We introduceren het concept van klasse. De initiële opgeslagen status.

Les 2. Erfenis

Controle van de toegang tot de basisklasse. Constructeurs en erfenis. Een klassenhiërarchie met meerdere niveaus creëren. Verwijzingen naar afgeleide klassen. Eenvoudige en meervoudige overerving.

Les 3. Virtuele functies en polymorfisme

Basisprincipes van virtuele functies. Pure virtuele functies en abstracte klassen. Vroege en late binding. Overbelasting van functies en methoden. Parametrisch polymorfisme

Les 4. Relaties tussen objecten in C++

Samenstelling, aggregatie, associatie, afhankelijkheid. Containerklassen. Type conversie-operatoren. Voorbeeldprogramma's in C++

Les 5: Functies en methoden delen

Overbelasting van de machinist. Functie- en klassesjablonen. Expliciete en gedeeltelijke specialisatie van sjablonen. Voorbeelden van eenvoudige programma's

Les 6. I/O-threads

Hiërarchie van streamklassen. I/O-bewerkingen voor standaardtypen. I/O organiseren voor aangepaste typen. Werken met bestanden en buffers in het geheugen. Hulpmiddelen voor uitvoeropmaak, manipulators

Les 7. Modulariteit ondersteunen. Een Blackjack-spel schrijven

Compilatie-eenheden. Verdeling in header- en implementatiebestanden. Preprocessor-richtlijnen, macro's en voorwaardelijke compilatie. Een Blackjack-spel schrijven

Les 8. Uitzonderingsmechanisme

Opwinding en situatieverwerking. Stapelvouwen, uitvoering van constructors en destructors. Ondersteuning voor klassenhiërarchie.
Standaard uitzonderingsklassen. Voorbeeldprogramma's die uitzonderingssituaties gebruiken

De cursus voor degenen die verder willen leren programmeren in C++ is gewijd aan geheugenbeheer en het werken met gegevens op een laag niveau. Het geeft een idee van de principes van geheugenbeheer in een C++-programma, het organiseren van gegevensopslag en het adresseren van functies. Een apart deel van de cursus gaat over het C++-type systeem en transformaties tussen datarepresentaties. Daarnaast worden kort de mogelijkheden van C++-voorverwerking met de mogelijkheid om brontekst te genereren tijdens de vertaling getoond.

Les 1: Basisprincipes van geheugenbeheer

Les 2. Typen beheren. Type systeem

Les 3. Voorbewerking. Voorwaardelijke compilatie

Ontwikkeling van programma's met een grafische interface in C++. 1 maand.
Qt-framework

Les 1. Qt Creator: Basisprincipes

Wat is Qt? Kort overzicht van functies (help, qtdemo, taalkundige, uic, enz.). Installeren van de QT-bibliotheek en ontwikkelomgeving. Qt Creator instellen voor werk (selecteren van een compiler, debugger, directory, enz.). Creatie en lancering van de eerste applicatie (Hallo wereld!). Widgets. Verschillende soorten tekstuitvoervelden. Knoppen en indicatoren.
Verwerken van signalen van widgets.

Les 2. Modulariteit in Qt

Kern Qt-modules. Hiërarchie van klassen. Het principe van modulariteit. Scheiding van engine en interface. Het concept van "model - representatie". Lijst, boom, tabel en methoden om ze weer te geven. Bescherm uitvoervelden. Documentatie over Qt-modules en -klassen. QMake en auto-build systemen voor projecten. Systeem voor het compileren en verbinden van het modules.pro-bestand

Les 3. Werken met gegevens in Qt.

Containerklassen. Iteratoren. Opeenvolgende containers. Associatieve containers. Werken met touwtjes. Afbeeldingen lezen, weergeven en opslaan. Werken met bestanden en mappen. I/O-streams. Basismethoden voor het openen van een bestand QFile, QFileDialog. Programmabronnen.

Les 4. Interactie van objecten in Qt

Qt-objectmodel. Geheugenbeheer. Hiërarchie van objecten. Signalen en slots. Objecten verbinden en loskoppelen. MOC is een meta-objectcompiler. Het principe van de gebeurtenislus. Gebeurtenisverwerking. Muis- en toetsenbordgebeurtenissen. Gebeurtenisfilters. Ondersteuning voor verschillende talen. Programmalokalisatie. Dynamische taalverandering (QLinguist). Toegang krijgen tot de opdrachtregel vanuit een programma

Les 5. GUI-ontwikkeling in Qt

QWidget-klasse. Soorten widgets. Hiërarchie van widgets. OpenGl en andere uitvoerbibliotheken van derden verbinden. Ontwikkeling van formulieren in Qt Designer. Formulieren gebruiken in projecten. Widget-indeling. Beleid voor formaatwijziging. Signalen verbinden met slots. Invoerfocus. Stijlbladen. Kleurenpalet. Maak uw eigen widgets.

Les 6. Een vensterinterface ontwikkelen in Qt

Interface voor één document en meerdere documenten. Kind- en ouderschermen. Subklassen (QDialog en etc.) Hoofdvenster. Werkbalken. Statusbalk. Een menu maken. Vervolgkeuzemenu. Contextmenu. Dialoogvensters. Documenten openen, opslaan en afdrukken.

Les 7. Werken met afbeeldingen en tekst in Qt

QSchildertekeningcontext. Coördineren systemen. Punt, lijn, rechthoek, veelhoek. Veren, borstels. Kleur modellen. Verlopen. Grafisch weergaveframework. Podium en optreden. Tekst met opmaakelementen. Lettertypen. Werken met HTML-opmaak. Uitvoer en besparing. WebEngine. Implementatie van een eenvoudige webbrowser.

Les 8. Timers, processen en threads in Qt

Datum en tijd. Timer-gebeurtenissen. Processen. Starten, rennen en stoppen. Stromen. Multithreading. Uitwisseling van signalen en gebeurtenissen. Synchronisatie. Mutexen

Les 9. Qt Quick-technologie

QML-taal. Elementen van de gebruikersinterface. Controle van de plaatsing van elementen. Grafische elementen. Werken met afbeeldingen en lettertypen. Werken met een muis, toetsenbord en touchpad. Implementatie van animatie. QML gebruiken in een project

Les 10. Extra ontwikkelhulpmiddelen en Qt-bouwhulpmiddelen

Programma testen. Soorten fouten. QDebug. Stap voor stap debuggen. Controlepunten. Variabele vensters en oproepketens. Eenheid testen. Het testen van de grafische interface. Typen projectbuilds (foutopsporing, uitvoer, profilering). Qt Creator en versiebeheersystemen. Git. Gerelateerde bibliotheken zoeken. Hoe je een applicatie naar een klant stuurt (zonder bronnen) zodat deze zeker voor hem gaat draaien

Les 11. Werken met databases in Qt

Korte informatie over het SQLite DBMS. Basishandelingen bij het werken met een database. Qt-tools voor het werken met SQLite. Implementatie van het werken met de database via het “model-view” concept. Andere databasebibliotheken bouwen en verbinden (Postgresql/mysql/ets)

Les 12. Werken met netwerken in Qt

Netwerkprotocollen op hoog en laag niveau. Aansluiting via stopcontacten. Client-server-model. Netwerktoegangscontrole. Verbinding maken met databases op de server

Tijdens de stage ontwikkel je een OpenSource teksteditor zoals Emacs in C++ met plugins. Je zult teamwerkvaardigheden opdoen, werken met git en tasktracker, en ook vertrouwd raken met Agile-ontwikkelmethodologieën, SCRUM, KANBAN.

Les 2. Inleiding tot flexibele methodieken. Taaktrackers

Scrum- en Kanban-methodieken. Hoe je taken op je neemt. De voordelen van initiatief en verantwoordelijkheid. Taaktrackers in Kanban-stijl. SMART-doelen stellen. Technische specificaties. Gebruikersverhalen. Gebruiksscenario's.

Les 3. Agile ontwikkelen. Scrum en Kanban

Waarden van Agile Methodologie. Scrum (details). Kanban. Implementatiefouten. Cargo-cultus. Micromanagement. Waarom transparantie nodig is en hoe u dit kunt bereiken. Scrum-chat.

Les 4. Risico's en deadlines

Risico's van planning en beheer. Deadlines en hun waarde. Tijdbeheer.

Les 5. Motivatie

De piramide van Maslow. Drie niveaus van motivatie. Hoe jezelf motiveren? Motivatie volgens Lebedev. Gelijkenis over de hond. Discipline.

Les 6. Problemen en oplossingen

Fouten bij het plannen en verzamelen van eisen. Managementfouten: micromanagement, imitatie. Gevolgen: omzet, overwerk, nachtwerk. Pogingen om nieuwe eisen en veranderingen door te voeren. Ontbrekende deadlines. Hopeloze projecten. Verantwoordelijkheid. Redding van het project. Wanneer moet je stoppen? Scharnier.

Les 7. Mentorschap

Teammanagement. Waarom mentorschap belangrijk is. Hoe vaak moet een programmeur mentor zijn? Leiderschapsvaardigheden. Delegatie. SLIMME doelstellingen. Vermogen om te leren.

Les 8. Productkwaliteit

Rauw product. Kwaliteitsproduct. Snel werkend prototype. Code van hoge kwaliteit. Evenwicht. Weigering van bepaalde functionaliteit. Functioneel testen. Zwart-witte doos. Eet het voer van uw eigen hond.

Les 9. Een CV schrijven

Zachte vaardigheden. Harde vaardigheden. Werken aan je CV.

Les 10. Voorbereiden op een sollicitatiegesprek

Interview met HR-manager en toekomstig manager.

Les 11. Carrière bij een IT-bedrijf. Vooruitzichten

Bij welke bedrijven is het de moeite waard om te solliciteren? Ontwikkeling van een specialist. Junior, Midden, Senior, Teamleider, CTO. Beheer.

Les 12. Samenvattend

Terugblik op wat er is bereikt. Afscheidswoorden.

Hoe word je programmeur? 13 lessen.
Stapsgewijze instructies voor het vinden van een baan

Een carrière in programmeren is een spannende reis door de wereld van moderne technologie. Elke ontwikkelaar heeft zijn eigen verhaal en ervaring. Er is echter een basisalgoritme dat u zal helpen de eerste stappen correct te zetten en naar uw doel te leiden. We hebben 13 videolessen voorbereid waarin we de meest prangende vragen over een programmeercarrière bij bedrijven en op de freelancemarkt beantwoordden. Denkt u er vaak aan om een ​​baan te vinden en denkt u dat u er klaar voor bent om geld te gaan verdienen? Dan is deze videocursus iets voor jou.

Les 1. Beroep “Programmeur”

Kenmerken van het beroep; veelgestelde vragen; vraag op de arbeidsmarkt.

Les 2. Loopbaanbegeleiding

Zal ik een succesvolle programmeur worden? Succesfactoren.

Les 3. Laten we beginnen met het schrijven van een CV

Het belangrijkste is de eerste indruk; hoe de positie te noemen.

Les 4. Een programmeertaal kiezen: webontwikkeling

Overzicht van talen voor website-ontwikkeling: HTML, CSS, JavaScript, PHP, Python, Ruby, C#, Java; de juiste keuze.

Les 5. Mobiele ontwikkeling. Universele programmeertalen

Overzicht talen: Java, Objective-C, Swift; C#, C++, Python: de juiste keuze.

Les 6. Regels voor een effectief CV

Lijst met technologieën; portefeuille; diploma's en certificaten; persoonlijke kwaliteiten. Gezicht op een technisch specialist en HR.

Les 7. Zoeken naar een baan: wat, waar, wanneer

Droombaan, psychologische aspecten; techniek aanvragen.

Les 8. Interview en proeftijd

Interviews voor programmeurs: hoe je je moet gedragen, wat je moet zeggen, waar je naar moet luisteren; proeftijd en regels voor het doorstaan ​​ervan.

Les 9. Freelancen: eerste stappen

Beoordeling van freelanceplatforms; registratiefuncties; accountregistratie; hoe je opvalt tussen de meerderheid van de artiesten.

Les 10. Freelancen: aan de slag en opdrachten vinden

Zoekstrategie voor bestellingen; volgordeprioriteit: wat aan te pakken; onderhandelingen; taken en valkuilen van technische specificaties; manieren om contact op te nemen met de klant; antwoorden schrijven en de aandacht van klanten trekken; de juiste vragen.

Les 11. Freelancen: orderafhandeling en betaling

Betaalmethoden: bankoverschrijving of contant; vooruitbetaling of achterafbetaling; een overzicht van situaties waarin elke methode beter zal werken; werkvoorbereiding en bindende afspraken met de opdrachtgever; kenmerken van het werkproces; laatste fasen van samenwerking; feedback delen; "raadpleeg"-techniek.

Les 12. Specialiteiten op het gebied van IT

Hoe werkt ontwikkeling in grote bedrijven? Wie zijn analisten, ontwerpers, testers, architecten, projectmanagers, teamleiders, etc.

Les 13. Carrièreladder in de IT

Hoe ziet de carrièreladder in de IT eruit? In welke specialismen kun je gemakkelijker je carrière starten? Wat zijn de ontwikkelingsperspectieven?

De cursus, ontwikkeld in samenwerking met de EnglishDom-school, zal u helpen de belangrijkste Engelstalige onderwerpen onder de knie te krijgen die relevant zijn voor beginnende IT-specialisten. Maximale oefening en focus op IT-vocabulaire. 10 lessen behandelen de voorbereiding van CV's, technische specificaties en zakelijke brieven, interviews en onderhandelingen, internationale communicatie bij het promoten van uw project. In live dialogen in het Engels versterken studenten zinnen die nuttig zullen zijn in hun werk voor ontwikkelaars en testers, marketeers en ontwerpers.

Les 10. Opstarten

We praten over ons project en stellen het team voor in het Engels.