C ++ fundamentals

Infopulse University Ukraine

Studiebeskrivelse

Læs den officielle beskrivelse

C ++ fundamentals

Infopulse University Ukraine

Kursus skitse

Grundlæggende begreber:

  • Hvad er en computer, computer kommando, et program og et programmeringssprog? Udviklingen af ​​disse begreber.
  • Computer udførelse program detaljeret analyse: beskriver roller operativsystem, drivere, CPU, hukommelse, bus, tastatur, mus, og andre komponenter
  • Forskellene mellem høje og lave niveau programmeringssprog (maskinkode, assembler, C, C ++, Java, SQL, HTML).
  • Hvordan at begynde at skrive et program. Tekst editor, compiler, linker.
  • IDE'er (Integrated Development Environments).

Kom godt i gang:

  • Forklaring af tidligere programkode linje for linje.
  • Præprocessoren - program indgang.
  • Introduktion første kodning regler. Fejl, hvordan man skal håndtere dem.
  • Datatyper (størrelse, rækkevidde), erklæring af variabler. Navngivning regler, kode læsbarhed og god kodning stil.
  • Stakken (LIFO kø). Variabler synlighed og liv varighed. Globale og lokale variable. Dårlig kodning stil - ved hjælp af globale variable. Synlighed extension operatør "::".
  • Variabler og konstanter, en forskel mellem initialisering og tildeling.
  • Binær, decimal og hexadecimal formater.

Praksis:

  • "Hej Verden!" program.
  • Hvordan til at modtage data fra bruger input og vise det. Dialogen Bruger.

De første værktøjer:

  • Begreberne operatør, udtryk og instruktion. Korrekt terminologi forbrug betydning for en vellykket interview passerer.
  • Aritmetiske operatorer, sammenligning operatører og regler i deres forbrug. Signeret og usignerede typer. Eksplicitte og implicitte typen støbt. Post- og preincrement. Prioritet og associativitet. Betingede operatører (hvis, ellers hvis), ternære operator, switch (falde igennem koncept).
  • Loops: for, mens, gøre, mens. Indlejrede løkker (i, j, k tællere bestilles).
  • Debug: Hvordan at spore et program udførelse, breakpoints, F5, F10, ure.

Praksis:

  • Et par spørgsmål fra interviewene.
  • En simpel regnemaskine. Undersøge muligheden for at behandle enhver brugerinput.
  • Hvordan man kan reducere antallet af mulige fejl. Den første designkoncept af cross-platform program.
  • Former tegning: fyldt, tom, med definerede grænser tykkelse, rektangler, trekanter, rhombus.
  • Hvordan til at vise tekst i midten af ​​rektanglet. Screen positionering
  • Flere figurer i træk.
  • Simple animationer (bevægelige figurer), getch (), at det første værktøj indhente nødvendige oplysninger.
  • Find og behandle specifikke tal i intervallet.
  • Det første program "Tegning", som kunne arbejde evig; Det skal vise menuen, drage nogen form ved brugerens valg eller afslutte.

Arrays, pegepinde, referencer, algoritmer:

  • Stak baseret array, dens størrelse, indeks, sizeof () operatør, matrix initialisering.
  • Pointers, hvordan iArray [i] udtryk rent faktisk virker, hvilke midler markøren type for en compiler. Dynamisk hukommelse tildeling, dynge, nye, slette, slette [] operatører. Alle pointere relaterede nuancer: initialiseret pegepinde, hængt (glemte) pegepinde, memory leaks (og værktøjer til at opdage det). Pointer til alt - void *.
  • Referencer, forskellene mellem dem og pointere.
  • Sorter, søg og sammenligning algoritmer, deres præstationer. Den profiler. Compile og runtime fejl.
  • Dynamiske arrays (der kan ændre størrelse på runtime). Multidimensionelle arrays. -

Praksis:

  • Algoritmer: søgning, søge minimum værdi, maksimal værdi, tæller varer, sum, gennemsnit.
  • Mere komplicerede algoritmer: arbejde med flerdimensionelle arrays, histogram skabelse, matrix rotation. Hvordan til at se fremad fra den aktuelle position i array.
  • Flere sortering algoritmer med analyse af deres ydeevne.
  • Første spil: kryds-tack-toe. Beskrivelse: Brugeren vil have mulighed for at vælge '0'-s eller' X'-s og indstille, hvor meget runder til at spille. Programmet bør afgøre vinderen af ​​nuværende runde og holde det samlede antal af sejre, tegner og nederlag.
  • Program også bør beskyttes mod brugerens fejl (med forklaring af dem), har en god brugervenlighed og interface. Avanceret: bruge farver til tekst output.

Funktioner:

  • Hvorfor har vi brug for i funktioner?
  • Passing funktionsargumenter i værdi, efter adresse og ved henvisning.
  • Første kig på ansøgningen adresseområde, og eksekverbar fil format, en pris på funktionen opkald.
  • Funktioner overbelastning, default parametre.
  • Rekursion, call stack, stack overflow, heltalsoverløb.
  • Pointers og const modifier: forskel på konstant pointer og pointer til konstant.
  • En god kodning stil. Hvorfor det er så vigtigt.

Praksis:

  • Algoritme resultatmåling. Sådan får rimelig nøjagtighed.
  • Nogle opgaver fra interview (rekursion forbrug).
  • Omskriv Tick_tack-tå, Lommeregner og tegning applikationer ved hjælp funktioner.

Strings:

  • En konsol applikation, system, buffer og tastatur interrupts.
  • Bibliotek funktioner: strcmp, strlen, strtok_s, strstr.
  • Sådan formaterer tekst output (i C og C ++), cin.getline.
  • char og wchar_t, nul afsluttet streng. Dynamisk vifte af strenge.

Praksis:

  • Opret en hjælpefunktioner til at beskytte din app fra brugerens forkert input:
  • forhindre at indtaste chars stedet for cifre;
  • forhindre at indtaste flere symboler end bufferkapacitet;
  • være klar til ekstra stor tekstindtastning
  • Hvor mange gange en given ord til stede i en sætning?
  • Brugeren indtaster et antal sætninger, ansøgning analyserer dem, skaber vifte af ord fra de sætninger, tæller antal OT ord, finder den længste og den korteste, sorterer ordene efter længde og alfabetisk.
  • Opret "rulletekst string" app med mulighed for at suspendere cyklus og opdatere indholdet.
  • Avanceret: Implementere word-wrap algoritme.

Bitvis operation:

  • Operatører &, |, ^, ~,, <<, >>!. -

Praksis:

  • Opbevares i et heltal variabel fire numre fra forskellige områder (0-5, 0-100, 10-60, 100- 40000).
  • Vis binær repræsentation af heltal
  • Hvad er det største antal kan gemmes i en byte?
  • Hæv 2 til potensen af ​​200.
  • List alle logiske drev af PC.
  • Kryptere og dekryptere indtastet tekst.

Konstruktioner, tællinger, fagforeninger, bit felter:

  • Hvad er brugerdefinerede typer. Forskelle mellem С og С ++. Første bekendtskab med objektorienteret programmering.
  • Universal lagring for hver datatype.
  • enum så kompakt erklæring af relaterede konstanter.

Praksis:

  • Sådan bruger fagforeninger til at sende og modtage data enhver type.
  • Udvikle app "Studerende" for at gemme og behandler personoplysninger. Den "Student" struktur (datalager) skal have følgende felter: navn, efternavn, alder, 5 mærker (array), gennemsnitskarakter. Gennemføre simple operationer med vifte af objekter: søg, sortere, tilføje, slette, redigere. Opret en algoritme for automatisk initialisering af vifte af strukturer (herunder navne). Du vil komme ind vifte størrelse fra tastaturet. Advanced opgave: sortere og vise data ved hjælp af pointere til strukturer, ikke objekter selv.

Præprocessordirektiver direktiver:

  • Hvordan og hvor skal defineres kritiske begrænsninger, konstanter.
  • Sådan at omfatte en samling enheder fra den samme eller forskellige steder, hvilket forhindrer fra herunder en fil flere gange.
  • Memory klasser: externe, statisk, tilmeld, auto.
  • Statiske variabler i funktioner og filer.
  • Betinget kompilering. Cross platform udvikling.
  • Brug # og ## operatører i debug.
  • Makroer: hvordan man skriver en makro, pro og contra, og hvordan man kan skrive unit test praktisk.

Praksis:

  • Opret flere * .h og * .cpp filer og linke dem korrekt.
  • Skriv en makro for evaluering af enhver erklæring.

Filer:

  • Rolle operativsystem, drivere og anvendelse i IO operationer, referencer regnskab, fil driftstilstande.
  • Hvilke filtyper relaterede fejl bør kontrolleres i produktionen ansøgning.
  • Læse, skrive og positionering operationer. Fil størrelse og format. Bufferet output.
  • Forskelle mellem tekst og binær fil åbning tilstande. Hvilken en skal anvendes.

Praksis:

  • Hvordan til at udforske drev indhold og mapper.
  • Hvordan til at kopiere en stor fil.
  • Skriv til fil krypteret data af alle formater. Læs den, dekryptere og show.
  • Opret en app som påmindelse (dagbog, arrangør). Beskrivelse: Brugeren indtaster nogle oplysninger og sætter tid til at minde om det. Når brugeren starter denne app, kontrollerer det den aktuelle dato og tid, ser gennem alle poster, der er gemt i en fil. Hvis der er noget at minde på dette tidspunkt vises en påmindelse.

Kursus projekt:

  • Simple filhåndtering, der kan søge og vise indholdet af hver fil (som er uden anerkendelse af filformat), og redigere bestemte filer. Den studerende skal udvikle sin egen filformat til lagring og behandling af data - en stor vifte af strukturer 'Student' (se beskrivelse ovenfor i praksis sektion af Structures).
  • Avanceret kompleksitet: Tilføj feltet 'erfaring' til 'Student' struktur (en række tegn i bunke) og dens længde. Ikke alle elever har den erfaring, bør det komplicere filformat.
  • Programmet skal have en brugervenlig grænseflade og operere i to tilstande:
  • Opret en fil og finde det i filsystemet.
  • åbne, læse, tilføje eller slette rekord, redigere den, sortere data, baseret på deres forskellige kriterier, som brugeren.
  • Arbejde i enhver tilstand, skal brugeren være i stand til at se genvejsmenuen. App skal beskyttes mod eventuelle brugerfejl og ikke har nogen form for memory leaks (bunke hukommelse, deskriptorer).

C ++ avanceret

Kursus varighed: 120 timer Funktion pointers:

  • Anvendelse af funktionspointere som søgning og sammenligning kriterier, som kan overføres som argumenter for at søge eller sortere algoritmer. Prædikater.
  • Tilpasning af funktionalitet til eksisterende grænseflade, for eksempel: sortere eventuelle arrays ved hjælp qsort_s funktion. Tilbagekald funktioner, typedef.
  • Sådan udvide funktionaliteten af ​​dit program uden omkompilering det. Udgifter til ekstra QA arbejde.

Praksis:

  • Sorter 'studerende «(jf bærelag praksis) ved flere kriterier modtaget på runtime.
  • Omskrivning 'Lommeregner' app hjælp vifte af funktionspointere.

Skabelon funktioner:

  • Type udlede, typecast og funktionsargumenter, skabelon funktion overbelastning.
  • Ikke-type parametre.

Praksis:

  • Udvikle en app, der sorterer arrays af ints, tegn og fordobler hjælp skabelon funktioner.
Funktioner med variabel (udefineret) antal parametre:
  • Rollen af ​​den første parameter, format beregnere, VA_LIST.
Praksis:
  • Udvikle en "mini printf" funktion.

Klasser (base-koncepter):

  • Philosophy of klasses design og anvendelse.
  • Constructors, destruktionsfunktioner, overbelastet konstruktører, klasse interface som et sæt regler til at arbejde sammen med ham ...
  • Hvordan at spore alle opkald til klasse funktioner i programmet.
  • Standard klasse funktion funktionaliteter, og hvordan du deaktivere den.
  • Sammensætning: sammenlægning og bekendtskab, en interaktion diagram, UML.
  • Initialisering regel. Sådan arbejder du med ressourcerne. dette, offentlige, private.
  • En præprocessor #ifndef og compiler-afhængige #pragma direktiver. Hvad er en C ++ standard; Klasse A har genstand for B klassen, men klasse B har en pointer til A - hvordan du løser dette. Venner: Hvordan en funktion eller klasse kan blive en venner til en anden klasse. Forholdet mellem "venner".

Praksis:

  • Udvikle Array og Line-klasser.
  • Et andet værktøj: klasse backup, der kan bruges af enhver klient til sikkert omskrive enhver fil, og sikkert hente en data (en proxy mellem en klient og en fil);

Kopier konstruktør og operatør overbelastning:

  • Hvornår har du brug for disse værktøjer? Shallow og dyb kopi.
  • Sådan kopierer et objekt, der har et andet formål indeni.
  • Eksplicitte konstruktører.
  • Indbyggede og brugerdefinerede datatyper. Operatør overbelastning regler.

Praksis:

  • Overbelastning af +, =, <<, (typecast), * (indirection), nye, ++, <, == and [] operators.

Linked liste, skabelon klasser, introduktion til STL:

  • Hvordan forbundet liste fungerer. Forskel mellem liste og array, sammenligning af deres forestillinger.
  • Hvad er CPU cache niveauer, cache hit og cache miss. Hvorfor knyttet lister er temmelig dårlige end gode.
  • Introduktion til STL: containere, iteratorer.
  • Skabelon klasser: * .hpp filer, konstruktører baseret på andre klasser objekter.
  • Brug af operatørerne overbelastes i skabeloner. Skabeloner specialisering.

Praksis:

  • Udvikle STL-lignende List klasse.

Anvendelse af "const" modifier i klasser:

  • const_cast, foranderlig, forskellen mellem den 'rigtige konstant "og skrivebeskyttede felt.
  • const medlem funktioner.

Praksis:

  • Udvikle en klasse med const medlemmer;

Statiske klassen:

  • Privat konstruktør, hvordan man tæller alle objekter af en klasse. Hvad er et mønster? Singleton mønster. Hvordan det skal designet til ikke at være en anti-mønster.
  • Statiske medlem funktioner.
  • Introduktion til smarte pointere, overbelastning af -> operatør.
  • Pegepinde til gruppemedlemmer.

Praksis:

  • Tæl antallet af alle objekter af klassen.
  • Udvikle en simpel SmartPtr klasse.

Arv og polymorfi:

  • Beskyttede gruppemedlemmer, privat og beskyttet arv.
  • Initialisering af barnet objektet.
  • Arbejde fra markøren til basen klassen. Nye UML symboler.
  • Virtuelle funktioner, destructor, abstrakt base klasse, interface, vptr, vtbl
  • Statisk og dynamisk binding, static_cast, dynamic_cast, typeid, RTTI.
  • Forskel mellem arv af funktionaliteten (og data) og grænseflade arv.
  • Når en virtuel destructor er en dårlig løsning. ABI - Application Binary Interface.

Praksis:

  • Opret klasse hierarki, check medlem synlighed fra klassen og fra objektet.
  • Mønstre: Bridge, Abstract Factory, Adapter, besøgende, Dekoratør.
  • Nogle spørgsmål fra interviews.

Dynamiske datastrukturer. STL, BOOST:

  • STL beholdere: vektor, liste, sæt, kort, deque, stack, unordered_set. Nuancer af arbejde med dem. std :: shared_ptr, make_shared (), std :: unique_ptr.
  • Algoritmer, funktorer, funktion adaptere: find, kopiere, find_if, fjerne, equal_to, bind2nd og så videre.
  • Navnerum. Big O notation.
  • BOOST: hvordan at kompilere sine biblioteker og medtage dem i et projekt. shared_ptr, weak_ptr, make_shared, binder, og så videre.

Praksis:

  • Arbejde med alle de vigtigste containere og algoritmer.

Undtagelser håndtering:

  • Arkitekturen i et program med håndtering undtagelse.
  • Rethrowing undtagelser, fangst (...), stak tilbagespoling sekvens og regler. Levetiden for Throwed undtagelse objekt. dynamic_cast<>.

Praksis:

  • Mønster 'Chain of Responsibility ".
  • Delvis beskrivelse af eksamensbeviset projektet Online butik '(uden tråde, biblioteker og netværk).

C ++ 11:

  • Lambdas, auto, højreværdi, bevægelige konstruktører og tildelingsoperatoren. std :: træk (), decltype, ensartet klargøringsliste, nullptr.

Praksis:

  • Tjek de betingelser, hvorunder udførelsen af ​​flytningen konstruktør vil være bedre end kopi konstruktør gør.

Multiple arv:

  • En anden implementering af adapteren mønster.
  • Virtual arv, forskellene mellem compilere. De dele af objektet.
  • Hvorfor C # og Java tillader multipel nedarvning fra kun grænseflader.
  • Det grundlæggende i COM-teknologi: IUnknown, QueryInterface, komponenten registrering, GetClassObject, regsvr32, CLSID.

Praksis:

  • Check faldgruber af typen støbning fra void *.

Dynamiske og statiske biblioteker:

  • Sådan eksporteres funktioner og klasser fra biblioteket. Hvordan at inkludere dem i et projekt.
  • Eksplicitte og implicitte sammenkædning, debug.
  • Design af en cross-platform program.

Praksis:

  • Brug bibliotekerne i din 'Online butik' projekt.
  • Begrebet en version kontrolsystemer. Git.

GUI applikationer ved hjælp Win32 API. Qt GUI .:

  • Hvad er forskellen mellem konsol app og vindue app. Uendelig løkke, beskeder, vindue procedure, forskelle mellem SendMessage og PostMessage funktioner? Ressource-fil * .rc.
  • Sådan oprettes en brugerdefineret vindue og definere en brugerdefineret besked.
  • Sådan arbejder du med kontroller: Knapper (radio, tjek, gruppefelt), kombinationsfelt, EDIT osv (herunder Qt).
  • InitCommonControls Function.
  • Begivenheder og slots i Qt. Sådan underklasse et vindue (erstatte et vindue procedure) (inkl. Qt), flytte viewport i vinduet. Oprettelse af brugerkontrol, OWNERDRAW stil.
  • Kompatibel HDC.

Praksis:

  • Opret tre versioner (hver udvider den tidligere version) af en "VectorDraw 'app, der trækker enkle former og gemmer dem som billede ved hjælp af vektorgrafik principper. Udvikle et filformat og program arkitektur (ved hjælp af polymorfi) for at opnå bagudkompatibilitet.

Processer og tråde:

  • Brugerens og OS adresse rum. Kernel formålsparagraf.
  • Hvornår skal du bruge tråde og hvad antal af dem kan fremskynde dit program. Trådens kontekst.
  • Tråd, flygtige og compiler optimering.
  • Tråde (og processer) synkronisering via Win32 API. Mutexes, events, semaforer, waitable timere. WaitForSingleObjects og andre. Familien af ​​atomare Interlocked- funktioner. I hvilken rækkefølge en mutexes skal låses op?
  • TLS (tråd lokal lagring). Reenterable og tråd sikker kode.
  • Processer: prioritet, forebyggende multitasking, hvordan barn proces arver håndtag.
  • IPC (interproces kommunikation), memory mapping, rør, fælles afsnit i biblioteket.
  • Funktioner til virtuel hukommelse, snapshot af processer, tråde, biblioteker.
  • Tråde synkronisering ved hjælp c ++ 11 og løft. std :: tråd (forskel fra boost :: tråd), mutex, lock_guad, condition_variable, unique_lock, øge :: Chrono.

Praksis:

  • Ansøgning beskrivelse: En konsol program ønsker at fremskynde noget arbejde. Du bør oprette og initialisere i "main" og int array, dele det på dele afhængigt af antallet af CPU'er kerner. Start det samme antal tråde og give dem deres dele af data. Imens den "vigtigste" fortsætter med at gøre sit arbejde og vente på tråde. Vis data i "vigtigste".
  • Sådan synkroniserer følgende køen: Én indgang tråd sender bestilt sekvens af datastrukturer til tre arbejdstager tråde. De gør det samme job, men det tid til at behandle, kan ethvert objekt være anderledes. Worker tråde behandler objekter og give dem til en udgang tråd at samle data sekvens i en tidligere ordre. GUI tråd viser data.
  • Sådan oprettes en brugerdefineret besked kø. WAIT_TIMEOUT.
  • Sådan bruges et vindue for at skrive besked til en tråd.
  • Sådan bruger TLS.
  • Sådan bruger atomare funktioner.
  • Sådan omdirigerer output fra konsol ansøgning til en anden proces - det samme som IDE gør, når det lanceres en compiler.
  • C ++ 11: brug af tråd, mutex, condition_variable, lock_guard, unique_lock klasser.
  • Hvilke biblioteker anvendes i ansøgningen, og hvor de er?
  • Interiøret i DllMain. Sådan blokere det, hvordan man bruger det.

Netværk applikationer:

  • Protokoller (IP, TCP, UDP, HTTP), stikkontakter, blokere og blokerende opkald ved hjælp Winsock2 bibliotek. Vælg, WSAAsyncSelect, WSAEventSelect.
  • TCP-forbindelse stater og fejl håndtering.

Praksis:

  • Simpel ekko server.
  • Netværk version af Tick-tack-toe.
  • Mini Git.

Diplom projekt 'Online butik':

Klient-server program: en server, en kunde til at købe produkter, flere kunder til at købe dem. Ved første server stand til at sælge kun to produktkategorier. Ansøgning skal have mulighed for at tilføje plug-ins - biblioteker med klasser til at arbejde med nogle andre produktkategorier. Den app skal anerkende sin allerførste start at sætte startkapital til at begynde sit arbejde (at købe produkter).

Server begynder sit arbejde ved parsing aktuelle mappe til listen plugins (biblioteker). Når den opdager et nyt bibliotek, det skal være i stand til at arbejde med ny produktkategori uden genkompilering. Den app nødt til at støtte cross-platform-arkitektur: hver platform afhængig rutine (ressourcer, hardware) skal adskilles fra logik.

Den app skal beskyttes fra brugerens og netværksfejl

Denne skole tilbyder programmer i:
  • Engelsk
Varighed og pris
This course is Online
Start Date
Startdato
Okt. 2019
Duration
Varighed
60 timer
Price
Pris
720 USD
24 sessioner, 2,5 timer, 2 gange om ugen
Information
Deadline
Locations
Ukraine - Kyiv, Kyiv City
Startdato : Okt. 2019
Ansøgningsfrist Kontakt skolen
Slutdato Kontakt skolen
Dates
Okt. 2019
Ukraine - Kyiv, Kyiv City
Ansøgningsfrist Kontakt skolen
Slutdato Kontakt skolen