C ++ fondamentaux

Infopulse University Ukraine

Description du programme

Lire la description officielle

C ++ fondamentaux

Infopulse University Ukraine

Plan de cours

Notions de base:

  • Qu'est-ce qu'un ordinateur, commande de l'ordinateur, une application et un langage de programmation? L'évolution de ces notions.
  • l'exécution du programme informatique analyse détaillée: décrivant les rôles de système d'exploitation, les pilotes, CPU, mémoire, bus, clavier, souris, et d'autres composants
  • Les différences entre les langues hautes et basses programmation de niveau (code machine, assembleur, C, C ++, Java, SQL, HTML).
  • Comment commencer à écrire un programme. éditeur de texte, compilateur, éditeur de liens.
  • IDEs (environnements de développement intégré).

Commencer:

  • Explication précédente ligne par ligne du code de programme.
  • Le préprocesseur - point d'entrée du programme.
  • Présentation de premières règles de codage. Erreurs, la façon de traiter avec eux.
  • Les types de données (taille, plage), déclaration de variables. règles de nommage, la lisibilité du code et une bonne style de codage.
  • La pile (file d'attente LIFO). Variables de visibilité et de la durée de vie. Les variables globales et locales. Bad style de codage - en utilisant des variables globales. Visibilité opérateur extension "::".
  • Variables et constantes, une différence entre l'initialisation et l'affectation.
  • Binaire, décimal et hexadécimal formats.

Pratique:

  • "Bonjour le monde!" programme.
  • Comment recevoir des données d'entrée de l'utilisateur et de le montrer. boîte de dialogue de l'utilisateur.

Les premiers outils:

  • Les notions d'opérateur, d'expression et de l'instruction. Corriger l'importance de l'utilisation de la terminologie pour la réussite de passage de l'entrevue.
  • Les opérateurs arithmétiques, les opérateurs de comparaison et les règles de leur utilisation. Signé et types non signés. Explicite et implicite de type cast. Post- et pré-incrémentation. Priorité et associativité. Les opérateurs conditionnels (if, else if), opérateur ternaire, commutateur (tomber à travers le concept).
  • Loops: pour, tout, faire tout. boucles emboîtées (i, j, k compteurs ordre).
  • Debug: Comment tracer une exécution du programme, les points d'arrêt, F5, F10, montres.

Pratique:

  • Quelques questions des interviews.
  • Une calculatrice simple. Examiner la capacité de traiter toute entrée d'utilisateur.
  • Comment réduire le nombre d'erreurs possibles. Le premier concept de design d'application multi-plateforme.
  • Formes dessin: remplis, vide, avec une épaisseur de frontières définies, rectangles, triangles, losanges.
  • Comment afficher du texte dans le milieu du rectangle. le positionnement de l'écran
  • Plusieurs formes d'affilée.
  • animations simples (formes mobiles), getch (), le premier outil pour obtenir des informations requises.
  • Trouver et traiter des numéros spécifiques dans la gamme.
  • Le premier programme «Dessin», qui pourrait travailler éternelle; il doit afficher le menu, dessiner une forme quelconque par le choix de l'utilisateur ou de résilier.

Tableaux, pointeurs, les références, les algorithmes:

  • Empilez tableau de base, sa taille, index, opérateur sizeof (), array initialisation.
  • Pointeurs, comment iArray [i] expression fonctionne réellement, ce qui signifie que le type de pointeur pour un compilateur. allocation de mémoire dynamique, tas, nouveau, supprimer, supprimer [] opérateurs. Tous les pointeurs liés nuances: pointeurs non initialisées, pendus pointeurs (oubliés), les fuites de mémoire (et des outils pour le détecter). Pointer à tout - void *.
  • Références, les différences entre eux et pointeurs.
  • Trier, recherche et algorithmes de comparaison, leur performance. Le profileur. Compiler et des erreurs d'exécution.
  • Les tableaux dynamiques (qui peuvent changer la taille lors de l'exécution). Les tableaux multidimensionnels. -

Pratique:

  • Algorithmes: recherche, rechercher la valeur minimale, la valeur maximale, compter les articles, somme, moyenne.
  • Des algorithmes plus complexes: travailler avec des tableaux multidimensionnels, la création d'histogramme, rotation de la matrice. Comment regarder en avant de la position actuelle dans le tableau.
  • Plusieurs algorithmes de tri avec une analyse de leur performance.
  • Premier match: tic-tac-toe. Description: L'utilisateur aura la possibilité de choisir «0'-s ou« X'-s et définir combien tours à jouer. Le programme devrait déterminer le gagnant du cycle actuel et de garder le nombre total de victoires, nuls et défaites.
  • Programme devrait également être protégé contre les erreurs de l'utilisateur (avec explication d'entre eux), ont une bonne ergonomie et interface. Avancé: utiliser la couleur pour la sortie de texte.

Les fonctions:

  • Pourquoi avons-nous besoin dans les fonctions?
  • Le passage des arguments de fonction par valeur, par adresse et par référence.
  • Premier coup d'oeil à l'adresse espace d'application, et le format de fichier exécutable, un coût de l'appel de fonction.
  • Fonctions de surcharge, les paramètres par défaut.
  • Recursion, pile d'appel, débordement de pile, débordement d'entier.
  • Pointeurs et modificateur const: une différence entre pointeur et pointeur constant constant.
  • Un bon style de codage. Pourquoi est-il si important.

Pratique:

  • mesure de la performance Algorithme. Comment obtenir une précision raisonnable.
  • Certaines tâches de l'entrevue (utilisation de récursion).
  • Réécrire Tick_tack-toe, Calculatrice et applications de dessin à l'aide de fonctions.

Strings:

  • Une application de la console, le tampon du système et les interruptions du clavier.
  • Bibliothèque de fonctions: strcmp, strlen, strtok_s, strstr.
  • Comment formater la sortie de texte (en c et c ++), cin.getline.
  • omble et wchar_t, zéro chaîne terminée. Tableau dynamique de chaînes.

Pratique:

  • Créer un fonctions auxiliaires pour protéger votre application de mauvaise entrée de l'utilisateur:
  • empêcher d'entrer les caractères à la place des chiffres;
  • empêcher d'entrer plus de symboles que la capacité de la mémoire tampon;
  • être prêt pour extra-large entrée de texte
  • Combien de fois sur un mot présent dans une phrase?
  • L'utilisateur entre un certain nombre de phrases, l'application leur analyse, crée tableau de mots de ces phrases, compte nombre des mots ot, trouve la plus longue et la plus courte, trie les mots par longueur et par ordre alphabétique.
  • Créer "défilement chaîne de texte" app avec l'option de suspendre le cycle et mettre à jour le contenu.
  • Avancé: Mettre en œuvre l'algorithme word-wrap.

opérations Bitwise:

  • Opérateurs et, |, ^, ~,, <<, >>!. -

Pratique:

  • Conserver dans un nombre entier variables quatre nombres de différentes gammes (0-5, 0-100, 10-60, 100- 40000).
  • Afficher la représentation binaire de valeur entière
  • Quel est le plus grand nombre peut être stocké dans 1 octet?
  • Lever 2 à la puissance de 200.
  • Liste toutes les unités logiques de PC.
  • Chiffrer et déchiffrer le texte saisi.

Ouvrages d'art, énumérations, les syndicats, les champs de bits:

  • Quels sont les types définis par l'utilisateur. Les différences entre С et С ++. Première connaissance avec la programmation orientée objet.
  • stockage universelle pour chaque type de données.
  • enum comme déclaration compacte de constantes connexes.

Pratique:

  • Comment utiliser les syndicats pour envoyer et recevoir des données de tout type.
  • Développer app «Étudiants» pour stocker et traiter les données personnelles. Le "Student" structure (magasin de données) doivent avoir des champs suivants: nom, prénom, âge, 5 points (tableau), la note moyenne. Mettre en œuvre des opérations simples avec tableau d'objets: rechercher, trier, ajouter, supprimer, modifier. Créer un algorithme d'initialisation automatique du tableau de structures (y compris les noms). Vous allez entrer dans la taille du tableau à partir du clavier. tâche avancée: les données de tri et de montrer à l'aide des pointeurs vers des structures, et non pas lui-même des objets.

directives préprocesseur:

  • Comment et où doit être défini des restrictions critiques, constantes.
  • Comment inclure une unités de compilation à partir des mêmes ou des endroits différents, ce qui empêche d'inclure un fichier plusieurs fois.
  • classes de mémoire: extern, static, inscrivez-vous, auto.
  • Les variables statiques dans les fonctions et les fichiers.
  • La compilation conditionnelle. Cross développement de la plateforme.
  • Utilisation # et ## opérateurs de débogage.
  • Macros: comment écrire une macro, pour et contre, et comment écrire des tests unitaires commodes.

Pratique:

  • Créer plusieurs .h * et * les fichiers .cpp et les relier correctement.
  • Écrire une macro pour l'évaluation de la performance de toute déclaration.

Fichiers:

  • Le rôle du système d'exploitation, les pilotes et l'application dans les opérations d'entrées-sorties, les références comptables, les modes de fonctionnement du fichier.
  • Quels types d'erreurs de fichiers liés doivent être vérifiés dans la demande de production.
  • Lire, écrire et les opérations de positionnement. La taille du fichier et le format. sortie tamponnée.
  • Les différences entre le texte et les modes d'ouverture de fichiers binaires. Lequel devrait être utilisé.

Pratique:

  • Comment explorer le contenu et les répertoires des lecteurs.
  • Comment copier un gros fichier.
  • Écrivez à déposer des données chiffrées de tout format. Lisez-le, décrypter et spectacle.
  • Créer une application comme rappel (agenda, organisateur). Description: L'utilisateur entre des informations et fixe le temps de rappeler à ce sujet. Une fois que l'utilisateur lance l'application, il vérifie la date et l'heure actuelle, regarde à travers tous les enregistrements stockés dans un fichier. S'il y a quelque chose à rappeler à ce moment, il affiche un message de rappel.

projet de cours:

  • gestionnaire de fichiers simple qui peut rechercher et afficher le contenu de chaque fichier (comme, sans la reconnaissance du format de fichier), et modifier certains fichiers. L'étudiant doit développer son propre format de fichier pour le stockage et le traitement des données - un grand éventail de structures de l'étudiant »(voir description ci-dessus dans la section de la pratique des Structures).
  • complexité avancée: Ajouter un champ «expérience» à la structure 'étudiant' (un tableau de caractères en tas) et sa longueur. tous les étudiants ne possèdent pas l'expérience, il devrait compliquer le format de fichier.
  • Le programme doit avoir une interface conviviale et fonctionner en deux modes:
  • Créer un fichier et le trouver dans le système de fichiers.
  • ouvrir, lire, ajouter ou supprimer l'enregistrement, le modifier, trier les données, en fonction de leurs différents critères spécifiés par l'utilisateur.
  • Travailler dans tous les modes, l'utilisateur doit être en mesure de voir le menu contextuel. App doit être protégé contre toute erreur de l'utilisateur et ne pas avoir tout type de fuites de mémoire (mémoire de tas, descripteurs).

C ++ avancé

Durée du cours: 120 heures pointeurs de fonction:

  • Utilisation des pointeurs de fonction que la recherche et de comparaison des critères qui peuvent être passés comme arguments pour rechercher ou trier des algorithmes. Prédicats.
  • Adapter les fonctionnalités à l'interface existante, par exemple: trier des tableaux en utilisant la fonction de qsort_s. Les fonctions de rappel, typedef.
  • Comment étendre les fonctionnalités de votre programme sans recompilation. Coût des travaux d'assurance qualité supplémentaire.

Pratique:

  • Trier «étudiants» (voir la pratique du cours de base) par plusieurs critères reçus lors de l'exécution.
  • Rewrite app 'Calculator' utilisation du tableau des pointeurs de fonction.

fonctions Modèle:

  • Type de déduire, à des arguments transtypage et de fonction, fonction de modèle surcharge.
  • paramètres de type non.

Pratique:

  • Développer une application qui trie des tableaux de ints, caractères et double en utilisant des fonctions de modèle.
Fonctions avec variable (undefined) nombre de paramètres:
  • Le rôle du premier paramètre, spécificateurs de format, va_list.
Pratique:
  • Développer une fonction "mini printf".

Classes (concepts de base):

  • Philosophie de conception de classe et de l'utilisation.
  • Constructeurs, destructeurs, constructeurs surchargés, interface de classe comme un ensemble de règles pour travailler avec lui ...
  • Comment tracer tous les appels à des fonctions de classe dans le programme.
  • fonctionnalités de fonction de classe par défaut et comment le désactiver.
  • Composition: l'agrégation et la connaissance, un diagramme d'interaction, UML.
  • règle d'initialisation. Comment travailler avec des ressources. cela, public, privé.
  • A #ifndef préprocesseur et directives #pragma compilateur-dépendante. Qu'est-ce qu'une norme c ++; Classe A a pour objet de classe B, mais la classe B a un pointeur vers A - comment résoudre ce problème. Amis: Comment une fonction ou une classe peut devenir un des amis à une autre classe. Les relations entre les «amis».

Pratique:

  • Développer les classes Array et ligne.
  • Un autre outil: BackUp de classe, qui peut être utilisé par tout client de réécrire en toute sécurité tous les fichiers, et en toute sécurité récupérer une donnée (un proxy entre un client et un fichier);

Copie constructeur et la surcharge des opérateurs:

  • Quand avez-vous besoin de ces outils? copie superficielle et profonde.
  • Comment copier un objet qui a un autre objet à l'intérieur.
  • constructeurs explicites.
  • Built-in et les types de données définis par l'utilisateur. Opérateur surcharge des règles.

Pratique:

  • Surcharge de +, =, <<, (transtypage), * (indirection), nouveau, ++, <, == and [] operators.

liste chaînée, les classes modèle, introduction à la STL:

  • Comment fonctionne la liste chaînée. Différence entre la liste et tableau, la comparaison de leurs performances.
  • Quels sont les niveaux de cache du processeur, le cache hit et en cache. Pourquoi liés listes sont plutôt mal que de bien.
  • Introduction à la STL: conteneurs, itérateurs.
  • classes de modèles: les fichiers * .hpp, constructeurs basés sur d'autres objets de classes.
  • Utilisation des opérateurs surcharge dans les modèles. Modèles spécialisation.

Pratique:

  • Développer stl comme liste de classe.

Utilisation du modificateur 'const' dans les classes:

  • const_cast, mutable, la différence entre la «constante réelle» et champ en lecture seule.
  • fonctions membres const.

Pratique:

  • Développer une classe avec les membres const;

membres de la classe statique:

  • constructeur privé, comment compter tous les objets d'une classe. Qu'est-ce qu'un modèle? modèle Singleton. Comment il doit être conçu pour ne pas être un anti-modèle.
  • fonctions membres statiques.
  • Introduction aux pointeurs intelligents, surcharge -> opérateur.
  • Les pointeurs vers les membres de la classe.

Pratique:

  • Comptez le nombre de tous les objets de la classe.
  • Développer une classe SmartPtr simple.

Héritage et polymorphisme:

  • les membres de la classe protégée, l'héritage privé et protégé.
  • Initialisation de l'objet enfant.
  • Travailler à partir du pointeur vers la classe de base. Nouveaux symboles UML.
  • Les fonctions virtuelles, destructor, classe de base abstraite, interface, VPTR, vtbl
  • Statique et dynamique de liaison, static_cast, dynamic_cast, typeid, RTTI.
  • Différence entre l'héritage de la fonctionnalité (et des données) et de l'interface héritage.
  • Quand un destructeur virtuel est une mauvaise solution. ABI - Application Binary Interface.

Pratique:

  • Créer hiérarchie de classe, consultez la visibilité de membre de la classe et de l'objet.
  • Patterns: Bridge, Résumé usine, adaptateur, visiteurs, décorateur.
  • Quelques questions des interviews.

structures de données dynamiques. STL, BOOST:

  • conteneurs STL: vecteur, liste, ensemble, carte, deque, pile, unordered_set. Nuances de travail avec eux. std :: shared_ptr, make_shared (), std :: unique_ptr.
  • Algorithmes, foncteurs, adaptateurs de fonction: trouver, copier, find_if, supprimer, equal_to, bind2nd et ainsi de suite.
  • Namespaces. notation O Big.
  • BOOST: comment compiler ses bibliothèques et de les inclure dans un projet. shared_ptr, weak_ptr, make_shared, bind, et ainsi de suite.

Pratique:

  • Travailler avec tous les conteneurs principaux et des algorithmes.

Exceptions manutention:

  • L'architecture d'un programme avec la gestion des exceptions.
  • exceptions rethrowing, catch (...), la pile de rembobinage séquence et les règles. La durée de vie de l'objet d'exception Throwed. dynamic_cast<>.

Pratique:

  • Motif «chaîne de responsabilité».
  • Description partielle du projet de diplôme »du magasin en ligne '(sans fils, les bibliothèques et la mise en réseau).

C ++ 11:

  • Lambdas, auto, rvalue, constructeurs mobiles et opérateur d'affectation. std :: move (), decltype, liste d'initialisation uniforme, nullptr.

Pratique:

  • Vérifiez les conditions dans lesquelles la performance du constructeur de déplacement sera mieux que constructeur de copie ne.

L'héritage multiple:

  • Une autre mise en œuvre du motif de l'adaptateur.
  • L'héritage virtuel, les différences entre les compilateurs. Les parties de l'objet.
  • Pourquoi C # et Java permettent l'héritage multiple de seulement interfaces.
  • Les bases de la technologie COM: IUnknown, QueryInterface, l'enregistrement composant, GetClassObject, regsvr32, CLSID.

Pratique:

  • Vérifiez les pièges de la coulée du type de void *.

bibliothèques dynamiques et statiques:

  • Comment exporter les fonctions et les classes de la bibliothèque. Comment les inclure dans un projet.
  • un lien explicite et implicite, debug.
  • Conception d'une application multi-plateforme.

Pratique:

  • Utilisez les bibliothèques dans votre projet «boutique en ligne».
  • La notion d'un système de contrôle de version. Git.

applications GUI en utilisant API Win32. Qt GUI .:

  • Quelle est la différence entre l'application de la console et la fenêtre de l'application. boucle infinie, messages, procédure de fenêtre, les différences entre les fonctions SendMessage et PostMessage? fichier de ressources * .rc.
  • Comment créer une fenêtre personnalisée et définir un message personnalisé.
  • Comment travailler avec des contrôles: BUTTON (radio, vérifier, groupbox), COMBOBOX, EDIT, etc. (y compris Qt).
  • Fonction InitCommonControls.
  • Evénements et fentes dans Qt. Comment la sous-classe d'une fenêtre (remplacer une procédure de fenêtre) (incl. Qt), déplacer la fenêtre dans la fenêtre. Création du contrôle de l'utilisateur, le style OwnerDraw.
  • Compatible HDC.

Pratique:

  • Créer trois versions (chacun étend la version précédente) d'une application 'VectorDraw', qui dessine des formes et les stocke comme image simples en utilisant les principes de graphiques vectoriels. Développer un format de fichier et de l'architecture du programme (en utilisant le polymorphisme) pour assurer la compatibilité ascendante.

Processus et threads:

  • espaces de l'utilisateur et l'adresse du système d'exploitation. Les objets de noyau.
  • Quand devriez-vous utiliser des fils et ce que certains d'entre eux peuvent accélérer votre programme. le contexte de la discussion.
  • Threads, volatile et optimisation du compilateur.
  • Threads (et processus) synchronisation à l'aide API Win32. Mutex, événements, sémaphores, minuteries waitable. WaitForSingleObjects et autres. La famille de fonctions Interlocked- atomiques. Dans quel ordre un mutex doivent être déverrouillées?
  • TLS (Thread Local Storage). Reenterable fil et le code de sécurité.
  • Processus: priorité, multitâche préemptif, comment processus enfant hérite des poignées.
  • IPC (communications interprocessus), la cartographie de la mémoire, des tuyaux, partagé sections dans la bibliothèque.
  • Fonctions de la mémoire virtuelle, instantané des processus, des threads, les bibliothèques.
  • la synchronisation des threads en utilisant c ++ 11 et boost. std :: fil (différence de boost :: thread), mutex, lock_guad, condition_variable, unique_lock, boost :: chrono.

Pratique:

  • Description de l'application: Une application console veut accélérer certains travaux. Vous devez créer et initialiser dans le «principal» et int array, diviser à des parties en fonction du nombre des noyaux de CPU. Démarrez le même nombre de fils et de leur donner leurs parties de données. En attendant, la «principale» continue à faire son travail et d'attendre les discussions. Afficher les données dans le «principal».
  • Comment synchroniser la file d'attente suivante: Un fil d'entrée envoie séquence ordonnée de structures de données à trois threads de travail. Ils font le même travail, mais le temps de traitement, tout objet peut être différent. threads de travail traitent des objets et leur donner à un fil de sortie pour réassembler séquence de données dans un ordre précédent. thread GUI affiche des données.
  • Comment créer un message personnalisé file d'attente. WAIT_TIMEOUT.
  • Comment utiliser une fenêtre pour poster un message à un fil.
  • Comment utiliser TLS.
  • Comment utiliser les fonctions atomiques.
  • Comment rediriger la sortie de l'application de la console à un autre processus - la même chose que IDE fait quand il lance un compilateur.
  • C ++ 11: utilisation de fil, mutex, condition_variable, lock_guard, les classes unique_lock.
  • Qu'est-ce que les bibliothèques sont utilisées dans l'application et où ils sont?
  • Les intérieurs de DllMain. Comment faire pour bloquer, comment l'utiliser.

Les applications réseau:

  • Protocoles (IP, TCP, UDP, HTTP), prises, bloquant et appels non bloquantes en utilisant winsock2 bibliothèque. sélectionner, WSAAsyncSelect, WSAEventSelect.
  • TCP états de connexion et les erreurs de manipulation.

Pratique:

  • serveur d'écho simple.
  • Réseautage version de tic-tac-toe.
  • Mini Git.

Projet de diplôme »Boutique en ligne»:

l'application client-serveur: un serveur, un client à acheter des produits, plusieurs clients pour les acheter. Au premier serveur capable de vendre seulement deux catégories de produits. L'application doit avoir la capacité d'ajouter des plug-ins - bibliothèques avec des classes à travailler avec d'autres catégories de produits. L'application doit reconnaître son premier lancement pour définir le capital de démarrage pour commencer son travail (l'achat de produits).

Server démarre son travail en analysant le répertoire courant à la liste des plug-ins (bibliothèques). Quand il découvre une nouvelle bibliothèque, il faut être capable de travailler avec une nouvelle catégorie de produits sans recompilation. L'application dispose pour soutenir l'architecture multi-plateforme: chaque routine dépendante de la plate-forme (ressources, matériel) doit être séparé de la logique.

L'application doivent être protégés de l'utilisateur et les erreurs de réseau

Cet établissement propose des programmes en :
  • Anglais
Durée et prix
Ce cours est En ligne
Start Date
Début
Octobre 2018
Duration
Durée
60 heures
Price
Prix
720 USD
24 sessions, 2,5 heures, 2 fois par semaine
Information
Deadline
Locations
Ukraine - Kiev, Kyiv City
Début : Octobre 2018
Date limite d'inscription Se renseigner
Date de fin Se renseigner
Dates
Octobre 2018
Ukraine - Kiev, Kyiv City
Date limite d'inscription Se renseigner
Date de fin Se renseigner