Read the Official Description

Struttura del corso

Nozioni di base:

  • Che cosa è un computer, il comando del computer, un'applicazione e un linguaggio di programmazione? L'evoluzione di queste nozioni.
  • Computer esecuzione del programma di analisi dettagliata: descrivere ruoli di sistema operativo, driver, CPU, memoria, bus, tastiera, mouse, e altri componenti
  • Le differenze tra lingue di alta e bassa di programmazione di livello (codice macchina, Assembler, C, C ++, Java, SQL, HTML).
  • Come iniziare a scrivere un programma. Editor di testo, compilatore, linker.
  • IDE (Integrated Development Environments).

Iniziare:

  • Spiegazione della precedente linea per linea di codice del programma.
  • Il preprocessore - voce del programma punto.
  • L'introduzione di regole prima di codifica. Gli errori, come trattare con loro.
  • I tipi di dati (dimensioni, gamma), dichiarazione di variabili. regole di naming, la leggibilità del codice e di buon stile di codifica.
  • Lo stack (coda LIFO). Variabili visibilità e la durata della vita. Le variabili globali e locali. stile di codifica Bad - utilizzo di variabili globali. Visibilità operatore estensione "::".
  • Variabili e costanti, una differenza tra l'inizializzazione e assegnazione.
  • Binario, decimale ed esadecimale formati.

Pratica:

  • "Ciao mondo!" programma.
  • Come ricevere dati da input dell'utente e mostrare. dialogo utente.

I primi strumenti:

  • Le nozioni di operatore, di espressione e di istruzione. Giusta importanza l'utilizzo della terminologia per il passaggio colloquio di successo.
  • operatori aritmetici, operatori di confronto e le regole del loro utilizzo. Firmato e tipi senza segno. Tipo cast esplicito e implicito. Post- e pre-incremento. Priorità e associatività. operatori condizionali (if, else if), operatore ternario, interruttore (cadere attraverso concetto).
  • Loops: for, while, do po '. cicli nidificati (i, j, k ordinare i contatori).
  • Debug: come tracciare una esecuzione del programma, i punti di interruzione, F5, F10, orologi.

Pratica:

  • Alcune domande delle interviste.
  • Una semplice calcolatrice. Esaminare la possibilità di elaborare qualsiasi input dell'utente.
  • Come ridurre il numero di possibili errori. Il primo concetto di design di applicazioni cross-platform.
  • Forme disegno: pieni, vuoti, con spessori confini definiti, rettangoli, triangoli, rombi.
  • Come visualizzare il testo al centro del rettangolo. posizionamento dello schermo
  • Diverse forme di fila.
  • animazioni semplici (forme in movimento), getch (), il primo strumento per ottenere le informazioni richieste.
  • Trova ed elaborare numeri specifici nel campo.
  • Il primo programma di 'Disegno', che potrebbe funzionare eterna; essa deve dimostrare di menu, disegnare qualsiasi forma per scelta dell'utente o terminare.

Array, puntatori, riferimenti, algoritmi:

  • Pila di allineamenti base, il suo operatore dimensioni, l'indice, sizeof (), l'inizializzazione array.
  • Puntatori, come fa iArray [i] espressione funziona realmente, che cosa significa il tipo di puntatore per un compilatore. allocazione dinamica della memoria, mucchio, nuovo, cancellare, delete [] operatori. Tutte le sfumature puntatori correlati: puntatori non inizializzati, impiccati puntatori (dimenticato), perdite di memoria (e gli strumenti per rilevare esso). Puntatore a tutto - void *.
  • I riferimenti, le differenze tra loro e puntatori.
  • Ordina, di ricerca e gli algoritmi di confronto, le loro prestazioni. Il profiler. Compilare e errori di runtime.
  • array dinamici (che può cambiare le dimensioni in fase di esecuzione). array multidimensionali. -

Pratica:

  • Algoritmi: di ricerca, il valore minimo di ricerca, valore massimo, contare articoli, somma, media.
  • algoritmi più complessi: lavorare con array multidimensionali, la creazione di istogrammi, la rotazione della matrice. Come guardare avanti dalla posizione corrente in serie.
  • Diversi algoritmi di ordinamento con l'analisi delle loro prestazioni.
  • Primo gioco: tick-tack-toe. Descrizione: L'utente avrà la possibilità di scegliere '0'-s o' X'-s e impostare la quantità di giri per giocare. Il programma dovrebbe determinare il vincitore del turno corrente e mantenere il numero totale di vittorie, pareggi e sconfitte.
  • Programma anche devono essere protetti dagli errori degli utenti (con la spiegazione di essi), hanno una buona usabilità e l'interfaccia. Avanzate: utilizzare il colore per l'uscita del testo.

funzioni:

  • Perché abbiamo bisogno di funzioni?
  • Passando argomenti della funzione per valore, per indirizzo e per riferimento.
  • Primo sguardo lo spazio di indirizzi di applicazione, e il formato file eseguibile, un costo della chiamata di funzione.
  • Funzioni sovraccarico, i parametri di default.
  • Ricorsione, stack di chiamate, stack overflow, integer overflow.
  • Puntatori e modificatore const: una differenza tra costante puntatore e puntatore a costante.
  • Un buon stile di codifica. Perché è così importante.

Pratica:

  • Algoritmo di misurazione delle prestazioni. Come ottenere ragionevole accuratezza.
  • Alcune attività di intervista (utilizzo ricorsione).
  • Riscrivere Tick_tack-toe, Calcolatrice e le applicazioni di disegno utilizzando le funzioni.

Archi:

  • Un'applicazione di console, buffer di sistema e interrupt di tastiera.
  • Funzioni di libreria: strcmp, strlen, strtok_s, strstr.
  • Come formato di output (in C e C ++), cin.getline.
  • char e wchar_t, pari a zero stringa terminata. matrice dinamica di stringhe.

Pratica:

  • Crea un funzioni ausiliarie per proteggere la vostra applicazione da ingresso sbagliato dell'utente:
  • evitare di entrare caratteri invece di cifre;
  • evitare di entrare più simboli di potere tampone;
  • essere pronti per extra-large di immissione del testo
  • Quante volte una data parola presente in una frase?
  • Utente inserisce un numero qualsiasi di frasi, l'applicazione li analizza, crea array di parole da quelle frasi, conta il numero parole ot, trova la più lunga e la più breve, ordina le parole per lunghezza e in ordine alfabetico.
  • Creare app "scrolling stringa di testo" con l'opzione per sospendere il ciclo e aggiornare il contenuto.
  • Avanzato: Implementare algoritmo di word-wrap.

operazioni bit per bit:

  • Gli operatori e, |, ^, ~,, <<, >>!. -

Pratica:

  • Conservare in una variabile intera quattro numeri da diverse gamme (0-5, 0-100, 10-60, 100- 40000).
  • Mostra rappresentazione binaria del valore intero
  • Qual è il più grande numero può essere memorizzato in 1 byte?
  • Sollevare 2 alla potenza di 200.
  • Elencare tutte le unità logiche di PC.
  • Crittografare e decrittografare il testo immesso.

Strutture, enumerazioni, i sindacati, i campi di bit:

  • Quali sono i tipi definiti dall'utente. Differenze tra С e С ++. Prima conoscenza con la programmazione orientata agli oggetti.
  • universale per ogni tipo di dati.
  • enum come dichiarazione compatta di costanti correlati.

Pratica:

  • Come utilizzare i sindacati per inviare e ricevere i dati di qualsiasi tipo.
  • Sviluppare app "Studenti" per memorizzare ed elaborare i dati personali. La struttura "Student" (archivio dati) devono avere seguenti campi: nome, cognome, età, 5 punti (Array), segno di media. Implementare semplici operazioni con array di oggetti: ricerca, ordinamento, aggiungere, eliminare, modificare. Creare un algoritmo di inizializzazione automatica di array di strutture (compresi i nomi). Si entra dimensione della matrice da tastiera. Livello avanzato: ordinamento e mostrano i dati usando puntatori a strutture, non oggetti stessa.

direttive del preprocessore:

  • Come e dove devono essere definite restrizioni critiche, costanti.
  • Come includere una unità di compilazione degli stessi o diversi luoghi, evitando di includere un file più volte.
  • classi di memoria: extern, static, registro, auto.
  • Le variabili statiche nelle funzioni e file.
  • la compilazione condizionale. sviluppo cross platform.
  • Utilizzando # e ## operatori di debug.
  • Macro: come scrivere una macro, pro e contro, e come scrivere unit test convenienti.

Pratica:

  • Creare diverse .h * e * file cpp e collegarli correttamente.
  • Scrivi una macro per la valutazione delle prestazioni di qualsiasi dichiarazione.

File:

  • Il ruolo del sistema operativo, i driver e l'applicazione nelle operazioni di IO, riferimenti contabili, modalità di funzionamento del file.
  • Quali tipi di errori correlati file dovrebbero essere controllati in applicazione di produzione.
  • Leggere, scrivere e le operazioni di posizionamento. dimensione del file e il formato. uscita con buffer.
  • Le differenze tra il testo e le modalità di apertura file binario. Quale dovrebbe essere usato.

Pratica:

  • Come per esplorare il contenuto unità e le directory.
  • Come copiare un file di grandi dimensioni.
  • Scrivi a presentare dati crittografati di qualsiasi formato. Leggetelo, decifrare e spettacolo.
  • Creare un app come promemoria (diario, organizzatore). Descrizione: L'utente inserisce alcune informazioni e imposta il tempo per ricordare a questo proposito. Una volta utente avvia questa applicazione, controlla la data e l'ora correnti, guarda attraverso tutti i record memorizzati in un file. Se ci sono qualcosa da ricordare in questo momento viene visualizzato un messaggio di promemoria.

Progetto del corso:

  • file manager semplice che può cercare e visualizzare il contenuto di ogni file (come è, senza il riconoscimento del formato di file), e modificare alcuni file. Lo studente dovrebbe sviluppare il proprio formato di file per la memorizzazione e l'elaborazione dei dati - un grande array di strutture 'studente' (vedi descrizione sopra nella sezione pratica delle Strutture).
  • complessità avanzata: Aggiungi campo 'esperienza' di struttura 'Student' (un array di caratteri in heap) e la sua lunghezza. Non tutti gli studenti hanno l'esperienza, dovrebbe complicare formato di file.
  • Il programma deve avere una interfaccia user-friendly e funzionare in due modalità:
  • Creare un file e trovare nel file system.
  • aprire, leggere, aggiungere o eliminare registrare, modificarlo, ordinare i dati, in base alle loro diversi criteri specificati dall'utente.
  • Lavorando in qualsiasi modalità, l'utente dovrebbe essere in grado di vedere il menu contestuale. App deve essere protetto da eventuali errori degli utenti e non avere alcun tipo di perdite di memoria (memoria heap, descrittori).

C ++ avanzata

Durata del corso: 120 ore puntatori a funzione:

  • Utilizzo dei puntatori a funzione come ricerca e confronto criteri, che possono essere passati come argomenti per cercare o ordinare algoritmi. Predicati.
  • Adattare la funzionalità di interfaccia esistente, ad esempio: ordinare gli array con la funzione qsort_s. funzioni di callback, typedef.
  • Come estendere le funzionalità del programma senza dover ricompilare esso. Costo del lavoro QA supplementare.

Pratica:

  • Ordina "studenti" (vedi pratica corso base) di diversi criteri ricevute in fase di esecuzione.
  • Rewrite app 'calcolatore' utilizzando array di puntatori a funzione.

Funzioni per i template:

  • Tipo Ricavare, gli argomenti typecast e la funzione, la funzione modello di sovraccarico.
  • I parametri non-Type.

Pratica:

  • Sviluppare un'applicazione che ordina array di int, char e raddoppia utilizzando le funzioni del modello.
Funzioni con numero variabile (non definita) di parametri:
  • Il ruolo del primo parametro, identificatori di formato, va_list.
Pratica:
  • Sviluppare una funzione di "mini printf".

Classi (concetti di base):

  • La filosofia di progettazione e l'uso di classe.
  • Costruttori, distruttori, costruttori di overload, interfaccia di classe come un insieme di regole di lavorare con lui ...
  • Come per tracciare tutte le chiamate a funzioni di classe in programma.
  • Di default le funzionalità di funzionalità di classe e come disabilitarlo.
  • Composizione: aggregazione e conoscenza, un diagramma di interazione, UML.
  • regola di inizializzazione. Come lavorare con le risorse. questo, pubblico, privato.
  • Un #ifndef preprocessore e direttive #pragma compilatore-dipendente. Che è uno standard C ++; Classe A ha oggetto della classe B, ma di classe B ha un puntatore ad una - come risolvere questo. Amici: Come una funzione o una classe possono diventare amici in un'altra classe. I rapporti tra 'amici'.

Pratica:

  • Sviluppare le classi Array e di linea.
  • Un altro strumento: BackUp classe, che può essere utilizzato da qualsiasi client di riscrivere in modo sicuro qualsiasi tipo di file, e sicuro recuperare un dato (un proxy tra un client e un file);

Copia costruttore e overloading degli operatori:

  • Quando avete bisogno di questi strumenti? copia superficiale e profonda.
  • Come copiare un oggetto che ha un altro oggetto al suo interno.
  • costruttori espliciti.
  • Built-in e tipi di dati definiti dall'utente. Overloading degli operatori regole.

Pratica:

  • Il sovraccarico di +, =, <<, (typecast), * (indiretto), nuova, ++, <, == and [] operators.

lista collegata, classi template, introduzione alla STL:

  • Come lista collegata funziona. Differenza tra la lista e la matrice, il confronto delle loro prestazioni.
  • Quali sono i livelli di cache della CPU, cache hit e la cache perdere. Perché legata liste sono piuttosto male che bene.
  • Introduzione alla STL: contenitori, iteratori.
  • classi template: i file * .hpp, costruttori sulla base di altri oggetti classi.
  • operatori che utilizzano sovraccarico nel template. Modelli specializzazione.

Pratica:

  • Sviluppare STL-come classe List.

Uso il modificatore 'const' in classi:

  • const_cast, mutevole, differenza tra il 'costante reale' e campo di sola lettura.
  • funzioni membro const.

Pratica:

  • Sviluppare una classe con i membri const;

i membri della classe statici:

  • costruttore privato, come contare tutti gli oggetti di una classe. Che cosa è un modello? pattern Singleton. Come dovrebbe essere progettata per non essere un anti-modello.
  • funzioni membro statiche.
  • Introduzione ai puntatori intelligenti, sovraccarico -> dell'operatore.
  • Puntatori a membri della classe.

Pratica:

  • Contare il numero di tutti gli oggetti della classe.
  • Sviluppare una semplice classe SmartPtr.

Ereditarietà e polimorfismo:

  • i membri della classe protette, ereditarietà privata e protetta.
  • Inizializzazione dell'oggetto bambino.
  • Lavora dal puntatore alla classe base. Nuovi simboli UML.
  • funzioni virtuali, distruttore, classe base astratta, interfaccia, vptr, vtbl
  • Binding statico e dinamico, static_cast, dynamic_cast, typeid, RTTI.
  • Differenza tra eredità della funzionalità (e dati) e l'eredità di interfaccia.
  • Quando un distruttore virtuale è una cattiva soluzione. ABI - Application Binary Interface.

Pratica:

  • Crea gerarchia di classi, controllare la visibilità del membro dalla classe e da oggetti.
  • Patterns: ponte, Abstract Factory, adattatore, dei visitatori, decoratore.
  • Alcune domande da interviste.

strutture dati dinamiche. STL, BOOST:

  • contenitori STL: Vettore, List, Set, mappa, deque, Catasta, unordered_set. Sfumature di lavorare con loro. std :: shared_ptr, make_shared (), std :: unique_ptr.
  • Algoritmi, funtori, adattatori funzione: trovare, copia, find_if, rimuovere, equal_to, bind2nd e così via.
  • Namespace. Notazione O-grande.
  • BOOST: come compilare le sue librerie e li include in un progetto. shared_ptr, weak_ptr, make_shared, bind, e così via.

Pratica:

  • Lavora con tutti i contenitori principali e algoritmi.

la gestione delle eccezioni:

  • L'architettura di un programma con gestione delle eccezioni.
  • eccezioni rethrowing, catch (...), stack di riavvolgimento sequenza e regole. La durata dell'oggetto eccezione Throwed. dynamic_cast<>.

Pratica:

  • Modello 'catena di responsabilità'.
  • descrizione parziale del progetto di diploma 'negozio online' (senza fili, biblioteche e networking).

C ++ 11:

  • Lambda, auto, rvalue, costruttori mobili e operatore di assegnazione. std :: mossa (), decltype, lista di inizializzazione uniforme, nullptr.

Pratica:

  • Controllare le condizioni alle quali le prestazioni del costruttore mossa sarà meglio di costruttore di copia fa.

ereditarietà multipla:

  • Un'altra realizzazione del modello di adattatore.
  • eredità virtuale, le differenze tra i compilatori. Le parti dell'oggetto.
  • Perché C # e Java consentono l'ereditarietà multipla da solo interfacce.
  • Le basi della tecnologia COM: IUnknown, QueryInterface, la registrazione del componente, GetClassObject, regsvr32, CLSID.

Pratica:

  • Controllare insidie ​​del tipo di fusione da void *.

librerie dinamiche e statiche:

  • Come esportare funzioni e classi dalla libreria. Come includere in un progetto.
  • Esplicite e implicite di collegamento, di debug.
  • Progettazione di un'applicazione multi-piattaforma.

Pratica:

  • Utilizzare librerie nel progetto 'negozio online'.
  • La nozione di sistemi di controllo versione. Idiota.

applicazioni GUI che utilizzano API Win32. GUI Qt .:

  • Qual è la differenza tra la console app e finestre app. Infinite Loop, messaggi, window procedure, le differenze tra le funzioni di SendMessage e PostMessage? Resource file * RC.
  • Come creare una finestra personalizzata e definire un messaggio personalizzato.
  • Come lavorare con i comandi: tasti (radio, controllo, groupbox), COMBOBOX, EDIT, ecc (comprese le Qt).
  • Funzione InitCommonControls.
  • Eventi e slot in Qt. Come alla sottoclasse una finestra (sostituire una procedura di finestra) (incl. Qt), spostando la finestra nella finestra. Creare il controllo utente, stile OwnerDraw.
  • HDC compatibile.

Pratica:

  • Creare tre versioni (ognuna estende la versione precedente) di un app 'VectorDraw', che richiama forme semplici e li memorizza come immagine utilizzando principi di grafica vettoriale. Sviluppare un formato di file e l'architettura di programma (utilizzando il polimorfismo) per ottenere la compatibilità all'indietro.

Processi e thread:

  • spazi di utente e l'indirizzo del sistema operativo. oggetti del kernel.
  • Quando si dovrebbe utilizzare fili e quale numero di loro può accelerare il vostro programma. contesto del thread.
  • Fili, volatile e ottimizzazione del compilatore.
  • Fili (e processi) sincronizzazione utilizzando API Win32. Mutex, eventi, semafori, timer waitable. WaitForSingleObjects e altri. La famiglia di funzioni Interlocked- atomiche. In che ordine devono essere sbloccati a mutex?
  • TLS (Thread storage locale). Rientrabili e filo codice di sicurezza.
  • Processi: priorità, preemptive multitasking, come processo figlio eredita maniglie.
  • IPC (comunicazione tra processi), mappatura della memoria, tubi, sezioni condivise in libreria.
  • Funzioni per la memoria virtuale, un'istantanea dei processi, le discussioni, le biblioteche.
  • sincronizzazione thread usando C ++ 11 e spinta. std :: filo (differenza rispetto boost :: filo), mutex, lock_guad, condition_variable, unique_lock, boost :: crono.

Pratica:

  • Descrizione dell'applicazione: un'applicazione console vuole accelerare un po 'di lavoro. È necessario creare e inizializzare in e int array di 'main', dividerlo a parti a seconda del numero di kernel di CPU. Inizia lo stesso numero di thread e dare loro le loro parti di dati. Nel frattempo il 'principale' continua a fare il suo lavoro e aspettare per i thread. Mostra i dati del 'principale'.
  • Come sincronizzare le seguenti code: Un thread ingresso invia sequenza ordinata di strutture di dati a tre thread di lavoro. Fanno lo stesso lavoro, ma il tempo per elaborare, qualsiasi oggetto può essere diversa. thread di lavoro elaborano oggetti e li danno a un thread di output per ricomporre sequenza di dati in un ordine precedente. filo GUI mostra i dati.
  • Come creare una coda di messaggio personalizzato. WAIT_TIMEOUT.
  • Come utilizzare una finestra per inserire un messaggio a un filo.
  • Come utilizzare TLS.
  • Come utilizzare le funzioni atomiche.
  • Come reindirizzare l'output da console applicazione a un altro processo - la stessa cosa di IDE fa quando si lancia un compilatore.
  • C ++ 11: l'uso di fili, mutex, condition_variable, lock_guard, classi unique_lock.
  • Quali librerie sono utilizzati in applicazioni e dove sono?
  • Gli interni di DllMain. Come bloccare esso, come usarlo.

Applicazioni di rete:

  • Protocolli (IP, TCP, UDP, HTTP), prese di corrente, blocco e le chiamate non bloccante utilizzando Winsock2 biblioteca. selezionare, WSAAsyncSelect, WSAEventSelect.
  • stati di connessione TCP e la gestione degli errori.

Pratica:

  • server di eco semplice.
  • Networking versione di Tick-tack-toe.
  • Mini Git.

progetto di diploma 'negozio online':

applicazione client-server: un server, un client per l'acquisto di prodotti, diversi clienti a comprarli. Al primo server in grado di vendere solo due categorie di prodotti. L'applicazione deve avere possibilità di aggiungere plug-in - librerie con le classi di lavorare con alcune altre categorie di prodotti. L'applicazione deve riconoscere il suo primo lancio per impostare capitale di avviamento per iniziare il suo lavoro (prodotti d'acquisto).

Server inizia il suo lavoro analizzando directory corrente per elencare i plug-in (biblioteche). Quando si scopre una nuova libreria, si deve essere in grado di lavorare con la nuova categoria di prodotto senza ricompilazione. L'applicazione deve supportare l'architettura multi-piattaforma: ogni piattaforma di routine dipendenti (risorse, hardware) deve essere separata dalla logica.

L'applicazione deve essere protetto da errori di rete per l'utente e

Program taught in:
Inglese

See 3 more programs offered by Infopulse University Ukraine »

Questo corso è online
Date di inizio
Ottobre 2019
Duration
60 orario
Prezzo
720 USD
24 sessioni, 2,5 ore, 2 volte a settimana
Deadline
By locations
By date
Date di inizio
Ottobre 2019
Data di fine
Application deadline

Ottobre 2019

Location
Application deadline
Data di fine