C ++ fundamenta

Infopulse University Ukraine

Programbeskrivning

Läs den officiella beskrivningen

C ++ fundamenta

Infopulse University Ukraine

Kursplan

Grundläggande begrepp:

  • Vad är en dator, kommandot, ett program och ett programmeringsspråk? Utvecklingen av dessa begrepp.
  • utförande Datorprogram detaljerad analys: beskriva roller operativsystem, drivrutiner, CPU, minne, buss, tangentbord, mus, och andra komponenter
  • Skillnaderna mellan höga och låga nivå programmeringsspråk (maskinkod, assembler, C, C ++, Java, SQL, HTML).
  • Hur man börja skriva ett program. Textredigerare, kompilator, länkare.
  • IDE (Integrated Development Environments).

Komma igång:

  • Förklaring av föregående programkod linje-för-linje.
  • Preprocessorn - program inkörsport.
  • Vi presenterar första kodningsregler. Fel, hur man handskas med dem.
  • Datatyper (storlek, räckvidd), förklaring av variabler. Namngivning regler, kod läsbarhet och god kodning stil.
  • Stapeln (LIFO kö). Variabler synlighet och livstiden. Globala och lokala variabler. Bad kodning stil - med hjälp av globala variabler. Sikt förlängning operatör "::".
  • Variabler och konstanter, en skillnad mellan initiering och uppdrag.
  • Binär, decimala och hexadecimala format.

Öva på:

  • "Hej världen!" program.
  • Hur man tar emot data från användarens input och visa den. dialog användare.

De första verktygen:

  • Begreppen operatör, uttryck och instruktioner. Korrekt terminologi Användning betydelse för en lyckad intervju passerar.
  • Aritmetiska operatorer, jämförelseoperatorer och regler för deras användning. Undertecknat och osignerade typer. Explicita och implicita typen formbar. Post- och förhandsökning. Prioritet och associativitet. Villkorliga operatörer (om, annars om), ternära operatör, switch (falla igenom begrepp).
  • Loops: för, medan gör stund. Kapslade slingor (I, J, k räknare ordning).
  • Debug: Hur man spåra en programkörning, brytpunkter, F5, F10, klockor.

Öva på:

  • Några frågor från intervjuerna.
  • En enkel miniräknare. Undersök möjligheten att behandla några signaler från användaren.
  • Hur man kan minska antalet möjliga fel. Den första designkoncept för plattformsoberoende program.
  • Former ritning: fyllda, tom, med definierade gränser tjocklek, rektanglar, trianglar, romb.
  • Hur att visa text i mitten av rektangeln. skärmpositionering
  • Flera former i en rad.
  • Enkla animationer (rörliga former), getch (), till det första verktyget erhålla nödvändig information.
  • Hitta och bearbeta särskilda nummer i intervallet.
  • Det första programmet "Rita", som skulle kunna fungera evigt; det måste visa menyn, dra någon form av användarens val eller avsluta.

Arrayer, pekare, referenser, algoritmer:

  • Stack baserad array, dess storlek, index, sizeof () operatör, array initiering.
  • Pekare, hur iArray [i] uttryck faktiskt fungerar, vad betyder pekartyp för en kompilator. Dynamisk minnesallokering, hög, nytt, ta bort, ta bort [] operatörer. Alla pekare relaterade nyanser: oinitierade pekare, hängda (glömt) pekare, minnesläckor (och verktyg för att upptäcka det). Pekare till allt - void *.
  • Referenser, skillnader mellan dem och pekare.
  • Sortera, sök och jämförelser algoritmer, deras prestanda. Profileraren. Sammanställa och runtime fel.
  • Dynamiska matriser (som kan förändra storlek vid körning). Flerdimensionella arrayer. -

Öva på:

  • Algoritmer: sök, sök minimivärde, maximivärde, räkna objekt, summa, medelvärde.
  • Mer komplicerade algoritmer: arbeta med flerdimensionella arrayer, histogram skapande, matris rotation. Hur man ser framåt från den aktuella positionen i uppsättningen.
  • Flera sorteringsalgoritmer med analys av deras resultat.
  • Första spelet: tick-tack-toe. Beskrivning: Användare kommer att ha möjlighet att välja "0'-s eller" X'-s och ange hur mycket omgångar som ska spelas. Programmet bör avgöra vinnaren av aktuella rundan och hålla det totala antalet segrar, oavgjorda och förluster.
  • Programmet bör också skyddas från användarens misstag (med förklaring av dem), har en god användbarhet och gränssnitt. Avancerad: använd färg för textproduktion.

funktioner:

  • Varför behöver vi funktioner?
  • Passerar funktions argument med värde, efter adress och med hänvisning.
  • En första titt på programmet adressutrymmet, och körbar filformat, en kostnad av funktionsanrop.
  • Funktioner överbelastning, standardparametrar.
  • Rekursion, anropsstacken, spill, heltalsspill.
  • Pekare och const modifierings: en skillnad mellan konstant pekare och pekare till konstant.
  • En bra kodning stil. Varför det är så viktigt.

Öva på:

  • Algoritmresultatmätning. Hur får rimlig noggrannhet.
  • Vissa uppgifter från intervjun (rekursion användning).
  • Rewrite Tick_tack-tå, kalkylator och Rita applikationer med funktioner.

strängar:

  • En konsol ansökan, systemet buffert och tangentbord avbrott.
  • Biblioteksfunktioner: strcmp, strlen, strtok_s, strstr.
  • Hur du formaterar text utgång (i C och C ++), cin.getline.
  • röding och wchar_t, nollterminerad sträng. Dynamisk array av strängar.

Öva på:

  • Skapa en hjälpfunktioner för att skydda din app från användarens fel ingång:
  • förhindra in tecken i stället för siffror,
  • förhindra in fler symboler än buffertkapacitet;
  • vara redo för extra stora textinmatning
  • Hur många gånger ett visst ord förekommer i en mening?
  • Användaren skriver in ett obegränsat antal meningar, ansökan tolkar dem, skapar rad ord från dessa meningar, räknar antal OT ord, finner den längsta och kortaste, sorterar ord av längd och alfabetiskt.
  • Skapa "rullande textsträngen" app med möjlighet att avbryta cykeln och uppdatera innehållet.
  • Avancerad: Implementera word-wrap-algoritmen.

Bitvisa operationer:

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

Öva på:

  • Förvaras i en heltalsvariabel fyra siffror från olika intervall (0-5, 0-100, 10-60, 100- 40000).
  • Visa binär representation av heltal
  • Vad är det största antalet kan lagras i ett byte?
  • Höj 2 upphöjt till 200.
  • Lista alla logiska enheter av PC.
  • Kryptera och dekryptera in text.

Strukturer, uppräkningar, fackföreningar, bitfält:

  • Vad är användardefinierade typer. Skillnader mellan С och С ++. Första bekant med objektorienterad programmering.
  • Universal Storage för varje datatyp.
  • enum så kompakt förklaring av relaterade konstanter.

Öva på:

  • Hur man använder fackföreningarna för att skicka och ta emot data något slag.
  • Utveckla app "studenter" för att lagra och behandla personuppgifter. Den "Student" struktur (datalagring) ha följande områden: namn, efternamn, ålder, 5 poäng (array), genomsnittsbetyg. Implementera enkla operationer med array med objekt: sök, sortera, lägga till, ta bort, redigera. Skapa en algoritm för automatisk initiering av uppsättningen av strukturer (inklusive namn). Du kommer in matrisstorlek från tangentbordet. Avancerad uppgift: sortera och visa data med hjälp av pekare till strukturer, inte föremål själv.

Förprocessorn direktiv:

  • Hur och var skall definieras kritiska begränsningar, konstanter.
  • Hur man kan inkludera en sammanställning enheter från samma eller olika platser, vilket hindrar från att inkludera en fil flera gånger.
  • Minnes klasser: Extern, statisk, registrera, auto.
  • Statiska variabler i funktioner och filer.
  • Villkorlig kompilering. Plattformsoberoende utveckling.
  • Med # och ## operatörer i debug.
  • Makron: hur man skriver ett makro, pro och contra, och hur man skriver bekväma enhetstester.

Öva på:

  • Skapa flera * .h och * .cpp filer och länka dem på rätt sätt.
  • Skriv ett makro för utvärdering av prestanda något uttalande.

filer:

  • Rollen av operativsystem, drivrutiner och program i IO operationer, referenser bokföring, fil driftlägen.
  • bör kontrolleras i produktionen ansökan vilka typer av filer relaterade fel.
  • Läsa, skriva och positioneringsoperationer. Filstorlek och format. Buffrad utgång.
  • Skillnader mellan text och binär fil öppningslägen. Vilken ska användas.

Öva på:

  • Hur utforska enheter innehåll och kataloger.
  • Hur kopiera en stor fil.
  • Skriv till fil krypterade data i valfritt format. Läs den, dekryptera och visa.
  • Skapa en app som påminnelse (dagbok, arrangör). Beskrivning: Användaren anger viss information och ställer in tiden för att påminna om det. När användaren startar denna app, kontrollerar det aktuellt datum och tid, ser igenom alla poster som är lagrade i en fil. Om det finns något att påminna vid denna tidpunkt visar en påminnelse.

Kurs projekt:

  • Enkel filhanterare som kan söka och visa innehållet i varje fil (som är, utan erkännande av filformat), och redigera vissa filer. Studenten ska utveckla sin egen filformat för datalagring och behandling - en stor samling av strukturer "Student" (se beskrivning ovan i praktiken delen av strukturer).
  • Avancerad komplexitet: Lägg till fält "erfarenhet" till "Student" struktur (en uppsättning tecken i hög) och dess längd. Inte alla studenter har erfarenhet, bör det komplicera filformat.
  • Programmet måste ha ett användarvänligt gränssnitt och arbeta i två lägen:
  • Skapa en fil och hitta den i filsystemet.
  • öppna, läsa, lägga till eller ta bort posten, redigera, sortera data, baserat på deras olika kriterier som anges av användaren.
  • Att arbeta i alla lägen, ska användaren kunna se kontextmenyn. App måste skyddas från eventuella användarfel och inte har någon form av minnesläckor (heap minne, deskriptorer).

C ++ advanced

Kurslängd: 120 timmar Funktions pekare:

  • Användning av funktions pekare som sök- och jämförelsekriterier, som kan skickas som argument för att söka eller sortera algoritmer. Predikat.
  • Anpassa din funktionalitet till befintliga gränssnitt, till exempel: sortera alla arrayer med hjälp qsort_s funktion. Återkopplingsfunktioner, typedef.
  • Hur man utöka funktionaliteten i ditt program utan att kompilera det. Kostnad för extra QA arbete.

Öva på:

  • Sortera "studenter" (se bärlager praktiken) av flera kriterier tas emot vid körning.
  • Rewrite "Calculator" appen rad funktions pekare.

Mallfunktioner:

  • Typ härledning typecast och funktionsargument, mall funktion överbelastning.
  • Icke-typparametrar.

Öva på:

  • Utveckla en app som sorterar grupper av INTs, tecken och fördubblar använder mallfunktioner.
Funktioner med variabel (odefinierad) antal parametrar:
  • Den roll som den första parametern, formatspecificerare, VA_LIST.
Öva på:
  • Utveckla en "mini printf" -funktion.

Klasser (bas begrepp):

  • Filosofi klass design och användning.
  • Konstruktörer, destruktorer, överbelastade konstruktörer, klass gränssnitt som en uppsättning regler för att arbeta med honom ...
  • Hur att spåra alla samtal till klass funktioner i programmet.
  • Standard klass funktions funktioner och hur man stänga av den.
  • Sammansättning: aggregering och bekant, en interaktion diagram, UML.
  • Initiering regel. Hur man arbetar med resurser. detta offentligt, privat.
  • En förbehandlare #ifndef och kompilatorberoende direktiv #pragma. Vad är en C ++ standard; Klass A har föremål för B-klass, men klass B har en pekare till A - hur man kan lösa detta. Vänner: Hur en funktion eller klass kan bli en vänner till en annan klass. Förbindelserna mellan "vänner".

Öva på:

  • Utveckla Array och telefoni klasser.
  • Ett annat verktyg: klass backup, som kan användas av alla klienter att säkert skriva en fil, och säkert hämta en data (en proxy mellan en klient och en fil);

Kopiera konstruktör och operatoröver:

  • När behöver du dessa verktyg? Grunt och djup kopia.
  • Hur du kopierar ett objekt som har en annan objekt inuti.
  • Explicita konstruktörer.
  • Inbyggda och användardefinierade datatyper. Operatör överbelastning regler.

Öva på:

  • Överbelastning av +, =, <<, (typecast) * (indirection), ny, ++, <, == and [] operators.

Länkad lista, mall klasser, introduktion till STL:

  • Hur länkad lista fungerar. Skillnaden mellan listan och array, jämföra deras prestationer.
  • Vad är CPU cache nivåer, cache hit och cache miss. Varför länkade listor är ganska dåligt än bra.
  • Introduktion till STL: containrar, iteratorer.
  • Mall klasser: * .hpp filer, konstruktörer baserade på andra klasser föremål.
  • Använda operatörer överbelastas i mallar. Mallar specialisering.

Öva på:

  • Utveckla stl-liknande lista klass.

Användning av "const" modifierings i klasser:

  • const_cast, föränderligt, skillnaden mellan den "riktiga konstant" och skrivskyddat fält.
  • const medlemsfunktioner.

Öva på:

  • Utveckla en klass med const medlemmar;

Statiska klassmedlemmar:

  • Privat konstruktör, hur man räknar alla objekt av en klass. Vad är ett mönster? Singleton. Hur det bör utformas inte vara en anti-mönster.
  • Statiska medlemsfunktioner.
  • Introduktion till smarta pekare, överbelastning av -> operatör.
  • Pekare till klassen.

Öva på:

  • Räkna antalet av alla objekt av klassen.
  • Utveckla en enkel SmartPtr klass.

Arv och polymorfism:

  • Skyddade klassmedlemmar, privat och skyddad arv.
  • Initiering av barnets objektet.
  • Arbeta från pekaren till basklass. Nya UML symboler.
  • Virtuella funktioner, destructor, abstrakt basklass, gränssnitt, vptr, vtbl
  • Statisk och dynamisk bindning, static_cast, dynamic_cast, typeid, RTTI.
  • Skillnad mellan arv av funktionalitet (och data) och gränssnitts arv.
  • När en virtuell destructor är en dålig lösning. ABI - Application Binary Interface.

Öva på:

  • Skapa klasshierarkin, kontrollera medlem synlighet från klassen och från objektet.
  • Mönster: Bro, abstrakt Factory, Adapter, besökare, dekoratör.
  • Några frågor från intervjuer.

Dynamiska datastrukturer. STL, BOOST:

  • STL behållare: vektor, listan, set, karta, deque, stack, unordered_set. Nyanser av arbete med dem. std :: shared_ptr, make_shared (), std :: unique_ptr.
  • Algoritmer, funktorer, funktionsadaptrar: hitta, kopiera, find_if, ta bort, equal_to, bind2nd och så vidare.
  • Namnområden. Ordo.
  • BOOST: hur man kompilerar sina bibliotek och inkludera dem i ett projekt. shared_ptr, weak_ptr, make_shared, binda, och så vidare.

Öva på:

  • Arbetet med alla stora behållare och algoritmer.

Undantag hantering:

  • Arkitekturen i ett program med felhantering.
  • Skicka tillbaka undantag, catch (...), stack omspolning sekvens och regler. Livslängd Throwed undantagsobjektet. dynamic_cast<>.

Öva på:

  • Mönster "ansvarskedjan".
  • Delvis beskrivning av examensarbete "Online butik" (utan trådar, bibliotek och nätverk).

C ++ 11:

  • Lambdas, auto, rvalue, rörliga konstruktörer och tilldelningsoperator. std :: move (), decltype, enhetlig initialiseraren lista, nullptr.

Öva på:

  • Kontrollera de förhållanden under vilka prestanda flytta konstruktören blir bättre än kopia konstruktören gör.

Multipelt arv:

  • En annan tillämpning av adaptern mönstret.
  • Virtuellt arv, skillnader mellan kompilatorer. De delar av föremålet.
  • Varför C # och Java tillåter multipelt arv från endast gränssnitt.
  • Grunderna i COM-teknik: IUnknown, QueryInterface komponenten registreringen GetClassObject, regsvr32, CLSID.

Öva på:

  • Kontrollera fallgropar av typen gjutning från void *.

Dynamiska och statiska bibliotek:

  • Så här exporterar funktioner och klasser från biblioteket. Hur att inkludera dem i ett projekt.
  • Explicit och implicit länkning, felsöka.
  • Utformning av en plattformsoberoende program.

Öva på:

  • Använd bibliotek i "Online butik" projektet.
  • Föreställningen om en version styrsystem. Git.

GUI-applikationer som använder Win32 API. Qt GUI .:

  • Vad är skillnaden mellan konsolen app och fönster app. Oändlig loop, meddelanden, fönster förfarande, skillnader mellan sendmessage och postmessage funktioner? Resursfilen * .rc.
  • Hur man skapar en anpassad fönster och definierar ett eget meddelande.
  • Hur man arbetar med kontroller: Buttons (radio, kontrollera, grupprutan), ComboBox, EDIT, etc. (inklusive Qt).
  • InitCommonControls Funktion.
  • Händelser och platser i Qt. Hur man underklass ett fönster (ersätter ett fönster förfarande) (inkl. Qt), flytta visnings i fönstret. Skapa användarkontroll, ownerdraw stil.
  • Kompatibel HDC.

Öva på:

  • Skapa tre versioner (var och en sträcker sig den tidigare versionen) av en "Vector appen, som drar enkla former och lagrar dem som bild med vektorgrafik principer. Utveckla ett filformat och programarkitektur (med polymorfism) för att uppnå bakåtkompatibilitet.

Processer och trådar:

  • Användarens och OS adressutrymmen. Kärnans föremål.
  • När ska du använda trådar och hur många av dem kan snabba upp ditt program. Tråden kontext.
  • Trådar, flyktig och kompilator optimering.
  • Trådar (och processer) synkronisering med hjälp av Win32 API. Mutexes, händelser, semaforer, waitable timers. WaitForSingleObjects och andra. Familjen atom Interlocked- funktioner. I vilken ordning en mutexes måste låsas upp?
  • TLS (tråd lokal lagring). Reenterable och tråd säker kod.
  • Processer: prioritet, förebyggande multitasking, hur barnprocess ärver handtag.
  • IPC (interprocesskommunikation), minnesmappning, rör, delade avsnitt i biblioteket.
  • Funktioner för virtuellt minne, ögonblicksbild av processer, trådar, bibliotek.
  • Trådar synkronisering med C ++ 11 och lyft. std :: tråd (skillnad från boost :: tråd), mutex, lock_guad, condition_variable, unique_lock, öka :: Chrono.

Öva på:

  • Programbeskrivning: En konsolapplikation vill påskynda en del arbete. Du bör skapa och initiera i "viktigaste" och int array, dela upp den till delar beroende på antal CPU kärnor. Starta samma antal trådar och ge dem deras delar av data. Samtidigt "viktigaste" fortsätter att göra sitt jobb och vänta på trådar. Visa data i "viktigaste".
  • Hur synkronisera följande kön: En ingång tråden sänder ordnad sekvens av datastrukturer till tre arbetare trådar. De gör samma jobb men tid att bearbeta, kan alla objekt vara annorlunda. Arbetare trådar bearbeta objekt och ge dem till en utgång tråd för att sätta ihop datasekvensen i en tidigare beställning. GUI tråd visar data.
  • Hur man skapar ett eget meddelande kö. WAIT_TIMEOUT.
  • Hur man använder ett fönster för att skicka meddelande till en tråd.
  • Hur man använder TLS.
  • Hur man använder atomära funktioner.
  • Hur man omdirigera utdata från konsolen applikation till en annan process - samma sak som IDE gör när det lanserar en kompilator.
  • C ++ 11: användning av tråd, mutex, condition_variable, lock_guard, unique_lock klasser.
  • Vilka bibliotek används i ansökan och där de är?
  • Inredningen i DllMain. Hur man kan blockera det, hur man använder den.

Nätverksprogram:

  • Protokoll (IP, TCP, UDP, HTTP), uttag, blockering och icke-blockerande samtal med Winsock2 bibliotek. välja WSAAsyncSelect, WSAEventSelect.
  • TCP-anslutning stater och fel hantering.

Öva på:

  • Enkel eko-server.
  • Nätverks version av Tick-tack-toe.
  • Mini Git.

Examensarbete "Online butik":

Klient-serverapplikation: en server, en klient för att köpa produkter, flera kunder att köpa dem. Vid första server kunna sälja endast två produktkategorier. Ansökan ska ha möjlighet att lägga till plug-ins - bibliotek med klasser för att arbeta med vissa andra produktkategorier. Appen måste erkänna sin första lanseringen för att ställa startkapital att börja sitt arbete (inköp av produkter).

Server startar sitt arbete genom att tolka aktuella katalogen till listan plug-ins (bibliotek). När den upptäcker ett nytt bibliotek, det måste kunna arbeta med ny produktkategori utan omkompilering. Appen måste stödja plattformsoberoende arkitektur: varje plattformsberoende rutin (resurser, hårdvara) bör skiljas från logik.

Appen måste skyddas från användarens och nätverksfel

Denna skola erbjuder program i:
  • Engelska
Varaktighet & Pris
Denna kurs är Online
Start Date
Startdatum
Okt. 2019
Duration
Varaktighet
60 Öppettider
Price
Pris
720 USD
24 sessioner, 2,5 timmar, 2 gånger i veckan
Information
Deadline
Locations
Ukraina - Kyiv, Kyiv City
Startdatum : Okt. 2019
Sista anmälningsdag Kontakt Skolan
Slutdatum Kontakt Skolan
Dates
Okt. 2019
Ukraina - Kyiv, Kyiv City
Sista anmälningsdag Kontakt Skolan
Slutdatum Kontakt Skolan