C ++ fundamentos

Infopulse University Ukraine

Descripción del programa

Lee la descripción oficial

C ++ fundamentos

Infopulse University Ukraine

Esquema del curso

nociones básicas:

  • ¿Qué es una computadora, equipo de comandos, una aplicación y un lenguaje de programación? La evolución de estas nociones.
  • análisis detallado de ejecución del programa de ordenador: la descripción de las funciones de sistema operativo, controladores, CPU, memoria, bus, teclado, ratón y otros componentes
  • Las diferencias entre los lenguajes de programación de alto y bajo nivel (código de máquina, ensamblador, C, C ++, Java, SQL, HTML).
  • ¿Cómo empezar a escribir un programa. editor de texto, compilador, enlazador.
  • IDE (Integrated Development Environments).

Empezando:

  • Explicación de la anterior línea por línea de código del programa.
  • El preprocesador - punto de entrada del programa.
  • La introducción de normas de codificación primera. Errores, cómo tratar con ellos.
  • Los tipos de datos (tamaño, gama), declaración de variables. Normas de denominación, la legibilidad del código y el buen estilo de codificación.
  • La pila (cola LIFO). Variables visibilidad y duración de la vida. Las variables globales y locales. estilo de codificación mal - uso de variables globales. La visibilidad del operador extensión "::".
  • Variables y constantes, una diferencia entre la inicialización y asignación.
  • Binario, decimal y hexadecimal formatos.

Práctica:

  • "¡Hola Mundo!" programa.
  • Cómo recibir datos de entrada del usuario y mostrarlo. diálogo de usuario.

Las primeras herramientas:

  • Las nociones de operador, la expresión y la instrucción. Correcto uso de la terminología importancia para el éxito del paso entrevista.
  • Los operadores aritméticos, operadores de comparación y las reglas de su uso. Firmado y los tipos sin signo. Explícita e implícita de tipo fundido. Y post-preincremento. Prioridad y asociatividad. Los operadores condicionales (if, else if), operador ternario, interruptor (caer a través de concepto).
  • Bucles, porque, mientras, hacer tiempo. bucles anidados (i, j, k contadores bajo pedido).
  • Depuración: ¿Cómo seguir la pista de la ejecución del programa, los puntos de interrupción, F5, F10, relojes.

Práctica:

  • Algunas preguntas de las entrevistas.
  • Una calculadora simple. Examinar la capacidad para procesar cualquier entrada del usuario.
  • Cómo reducir el número de posibles errores. El primer concepto de diseño de aplicaciones multiplataforma.
  • Dibujo de formas: llenos, vacíos, con un espesor de bordes definidos, rectángulos, triángulos, rombos.
  • Cómo mostrar texto en el centro del rectángulo. posición de la pantalla
  • Varias formas en una fila.
  • animaciones simples (formas en movimiento), getch (), la primera herramienta para obtener la información requerida.
  • Encontrar y procesar números específicos en el rango.
  • El primer programa de 'Dibujo', que podría trabajar eterna; debe mostrar el menú, dibujar cualquier forma de elección del usuario o terminar.

Arrays, indicadores, referencias, algoritmos:

  • Pila de conjuntos basados, su tamaño, su índice, operador sizeof (), la inicialización del campo.
  • Punteros, ¿cómo iArray [i] expresión realmente funciona, lo que significa el tipo de puntero para un compilador. Asignación dinámica de memoria, montón, nuevo, borrar, eliminar [] operadores. Todos los matices punteros relacionados: punteros, punteros no inicializados colgados (olvidado), pérdidas de memoria (y herramientas que detecten). Puntero a todo - void *.
  • Las referencias, las diferencias entre ellos y los punteros.
  • Ordenar, buscar y algoritmos de comparación, su rendimiento. El generador de perfiles. Compilar y los errores de ejecución.
  • Las matrices dinámicas (que puede cambiar el tamaño en tiempo de ejecución). Las matrices multidimensionales. -

Práctica:

  • Algoritmos: búsqueda, el valor mínimo de la búsqueda, valor máximo, el recuento de artículos, suma, promedio.
  • Los algoritmos más complicados: trabajan con matrices multidimensionales, la creación de histograma, rotación de la matriz. Cómo mirar hacia adelante desde la posición actual en la matriz.
  • Varios algoritmos de clasificación con el análisis de su desempeño.
  • Primer juego: tic-tac-dedo del pie. Descripción: El usuario tendrá la opción de elegir '0' s-o 'X' s y establecer la cantidad de rondas para jugar. El programa debe determinar el ganador de la ronda actual y mantener el número total de victorias, empates y derrotas.
  • Programa también deben ser protegidos de los errores del usuario (con las explicaciones de ellos), tienen una buena capacidad de uso y la interfaz. Avanzado: utilizar el color para la salida de texto.

funciones:

  • ¿Por qué necesitamos en funciones?
  • Al pasar argumentos por valor, por su dirección y por referencia.
  • Primer vistazo a el espacio de direcciones aplicación y formato de archivo ejecutable, un coste de la llamada a la función.
  • Funciones de sobrecarga, los parámetros por defecto.
  • La recursividad, pila de llamadas, desbordamiento de pila, desbordamiento de enteros.
  • Punteros y modificador const: una diferencia entre el puntero constante y puntero a constante.
  • Un buen estilo de codificación. ¿Por qué es tan importante.

Práctica:

  • la medición del rendimiento del algoritmo. ¿Cómo conseguir una precisión razonable.
  • Algunas de las tareas de la entrevista (el uso de la recursividad).
  • Reescribir las aplicaciones de dibujo utilizando funciones Tick_tack-dedo del pie, Calculadora y.

Instrumentos de cuerda:

  • Una aplicación de consola, memoria intermedia del sistema y las interrupciones de teclado.
  • Funciones de biblioteca: strcmp, strlen, strtok_s, strstr.
  • Cómo dar formato a la salida de texto (en C y C ++), cin.getline.
  • Char y wchar_t, cadena terminada en cero. matriz dinámica de cadenas.

Práctica:

  • Crear una función auxiliar para proteger su aplicación desde la entrada incorrecta del usuario:
  • evitar entrar caracteres en lugar de dígitos;
  • evitar entrar en más símbolos que la capacidad de amortiguación;
  • estar listo para la introducción de texto extra grande
  • ¿Cuántas veces a la palabra dada presente en una frase?
  • El usuario introduce cualquier número de frases, la aplicación de los analiza, crea matriz de palabras de esas frases, palabras, números de cuenta ot, encuentra la más larga y la más corta, ordena las palabras por la longitud y alfabéticamente.
  • Crear una aplicación "scrolling cadena de texto" con la opción de suspender el ciclo y actualizar el contenido.
  • Avanzado: Implementar el algoritmo word-wrap.

operaciones bit a bit:

  • Operadores y, |, ^, ~,, <<, >>!. -

Práctica:

  • Almacenar en una variable entera cuatro números de diferentes rangos (0-5, 0-100, 10-60, 100- 40000).
  • Mostrar la representación binaria de valor entero
  • ¿Cuál es el número más grande se puede almacenar en 1 byte?
  • Elevar 2 a la potencia de 200.
  • Enumerar todas las unidades lógicas de PC.
  • Cifrar y descifrar el texto introducido.

Estructuras, enumeraciones, los sindicatos, los campos de bits:

  • ¿Cuáles son los tipos definidos por el usuario. Las diferencias entre С y С ++. En primer lugar iniciación en la programación orientada a objetos.
  • almacenamiento universal para cada tipo de datos.
  • enumeración como la declaración compacta de constantes relacionadas.

Práctica:

  • Cómo utilizar los sindicatos para enviar y recibir datos de cualquier tipo.
  • Desarrollar aplicaciones "Estudiantes" para almacenar y procesar datos personales. La estructura de "Student" (almacén de datos) tienen que tener los siguientes campos: nombre, apellido, edad, 5 puntos (array), nota media. Implementar operaciones sencillas con matriz de objetos: buscar, ordenar, añadir, borrar, editar. Crear un algoritmo de inicialización automática de la matriz de estructuras (incluyendo nombres). Se entra en el tamaño del arreglo de teclado. tarea avanzada: ordenar los datos y mostrar el uso de punteros a estructuras, no es en sí objetos.

directivas del preprocesador:

  • ¿Cómo y dónde se deben definir restricciones críticas, constantes.
  • Cómo incluir una unidades de compilación de los mismos o diferentes lugares, incluyendo la prevención de un archivo varias veces.
  • clases de memoria: extern, estática, registro, de automóviles.
  • Las variables estáticas en las funciones y archivos.
  • La compilación condicional. el desarrollo de plataforma cruzada.
  • El uso de # ## y operadores de depuración.
  • Macros: cómo escribir pruebas unitarias convenientes macro, favor y en contra, y la forma de escribir.

Práctica:

  • Crear varios .h * y * archivos .cpp y vincularlos correctamente.
  • Escribir una macro para la evaluación del desempeño de cualquier declaración.

archivos:

  • El papel del sistema operativo, controladores y aplicación en las operaciones de IO, las referencias de contabilidad, los modos de operación de archivos.
  • ¿Qué tipos de errores relacionados con ficheros deben revisarse en aplicación de producción.
  • Leer, escribir y operaciones de posicionamiento. tamaño y formato del archivo. buffer de salida.
  • Las diferencias entre los modos de apertura de archivos binarios y de texto. ¿Cuál debería ser utilizado.

Práctica:

  • Cómo explorar el contenido de las unidades y directorios.
  • Cómo copiar un archivo grande.
  • Escribir en el archivo de datos encriptados de cualquier formato. Leerlo, descifrar y espectáculo.
  • Crear una aplicación como recordatorio (diario, organizador). Descripción: El usuario introduce alguna información y establece el tiempo para recordar al respecto. Una vez que el usuario pone en marcha esta aplicación, se comprueba la fecha y hora actuales, mira a través de todos los registros almacenados en un archivo. Si hay algo para recordar en este momento se muestra un mensaje recordatorio.

proyecto del curso:

  • administrador de archivos simple que puede buscar y visualizar el contenido de cada archivo (tal como está, sin el reconocimiento de formato de archivo), y editar ciertos archivos. El estudiante debe desarrollar su propio formato de archivo para el almacenamiento y procesamiento de datos - una gran variedad de estructuras 'Estudiante' (ver descripción más arriba en la sección de la práctica de las Estructuras).
  • complejidad avanzada: Agregar campo "experiencia" a la estructura 'Estudiante' (una matriz de caracteres en montón) y su longitud. No todos los estudiantes tienen la experiencia, se debe complicar formato de archivo.
  • El programa debe tener una interfaz fácil de usar y operar en dos modos:
  • Crear un archivo y encontrarlo en el sistema de archivos.
  • abrir, leer, añadir o eliminar el registro, editar, ordenar los datos, basados ​​en sus diversos criterios especificados por el usuario.
  • Trabajar en cualquier modo, el usuario debe ser capaz de ver el menú contextual. Aplicación debe ser protegido de cualquier error de usuario y no tienen ningún tipo de pérdidas de memoria (memoria de almacenamiento dinámico, descriptores).

C ++ avanzada

Duración del curso: 120 horas punteros de función:

  • El uso de los punteros de función como criterio de búsqueda y comparación, que se pueden pasar como argumentos para buscar u ordenar algoritmos. Predicados.
  • La adaptación de su funcionalidad a la interfaz existente, por ejemplo: ordenar las matrices usando la función qsort_s. funciones de devolución de llamada, typedef.
  • Cómo extender la funcionalidad de su programa sin tener que recompilar la misma. El costo de los trabajos de control de calidad extra.

Práctica:

  • Ordenar "estudiantes" (véase la práctica capa de base) por varios criterios recibidos en tiempo de ejecución.
  • Reescritura aplicación 'calculadora' usando matriz de punteros de función.

Funciones de plantilla:

  • Tipo deduciendo, argumentos typecast y de función, función de plantilla sobrecarga.
  • parámetros de tipo no.

Práctica:

  • Desarrollar una aplicación que ordena matrices de enteros, caracteres y se duplica el uso de las funciones de plantilla.
Las funciones con número variable (no definido) de los parámetros:
  • El papel del primer parámetro, especificadores de formato, va_list.
Práctica:
  • Desarrollar un "mini printf" función.

Clases (conceptos básicos):

  • Filosofía de diseño de la clase y su uso.
  • Constructores, destructores, constructores sobrecargados, interfaz de clase como un conjunto de reglas para trabajar con él ...
  • Cómo rastrear todas las llamadas a funciones de clase en el programa.
  • Defecto funcionalidades función de la clase y la forma de desactivarlo.
  • Composición: la agregación y conocidos, un diagrama de interacción, UML.
  • norma de inicialización. Cómo trabajar con los recursos. esto, pública, privada.
  • Un #ifndef preprocesador y las directivas del compilador #pragma-dependiente. ¿Qué es un estándar de C ++; Clase A tiene objeto de la clase B, pero la clase B tiene un puntero a A - cómo resolver esto. Amigos: ¿Cómo una función o clase puede convertirse en un grupo de amigos a otra clase. Las relaciones entre "amigos".

Práctica:

  • Desarrollar clases de matriz y de línea.
  • Otra herramienta: Copia de seguridad de clase, que puede ser utilizado por cualquier cliente volver a escribir de forma segura cualquier archivo, de forma segura y recuperar un conjunto de datos (un proxy entre un cliente y un archivo);

Copia constructor y operador de sobrecarga:

  • ¿Cuándo se necesita estas herramientas? copia superficial y profundo.
  • Cómo copiar un objeto que tiene otro objeto en el interior.
  • constructores explícitos.
  • Built-in y tipos de datos definidos por el usuario. La sobrecarga de operadores reglas.

Práctica:

  • La sobrecarga de +, =, <<, (encasillado), * (dirección), nuevo, ++, <, == and [] operators.

lista enlazada, clases de plantilla, introducción a STL:

  • ¿Cómo funciona lista enlazada. Diferencia entre la lista y la matriz, la comparación de sus actuaciones.
  • ¿Cuáles son los niveles de caché de CPU, memoria caché de golpe y falta de memoria caché. ¿Por qué ligado listas son bastante malo que bueno.
  • Introducción a STL: contenedores, iteradores.
  • clases de plantilla: los archivos * .hpp, constructores basados ​​en otras clases de objetos.
  • Utilización de operadores sobrecargan en las plantillas. Plantillas especialización.

Práctica:

  • Desarrollar clase List-STL similares.

Uso del modificador 'const' en las clases:

  • const_cast, mutable, diferencia entre la 'constante real' y campo de sólo lectura.
  • métodos constantes.

Práctica:

  • Desarrollar una clase con miembros const;

miembros de la clase estática:

  • constructor privado, la forma de contar todos los objetos de una clase. ¿Qué es un patrón? patrón Singleton. Cómo debe ser diseñado para no ser un anti-patrón.
  • métodos estáticos.
  • Introducción a los punteros inteligentes, sobrecarga del operador ->.
  • Los punteros a miembros de la clase.

Práctica:

  • Contar el número de todos los objetos de la clase.
  • Desarrollar un simple clase SmartPtr.

Herencia y polimorfismo:

  • miembros de la clase protegidas, la herencia privada y protegida.
  • La inicialización del objeto secundario.
  • Trabajar desde el puntero a la clase base. Nuevos símbolos de UML.
  • funciones virtuales, destructor, clase base abstracta, interfaz, VPTR, VTBL
  • Estática y dinámica de unión, static_cast, moldeado dinámico, typeid, RTTI.
  • Diferencia entre la herencia de la funcionalidad (y datos) y la herencia de interfaces.
  • Cuando un destructor virtual es una mala solución. ABI - Aplicación interfaz binaria.

Práctica:

  • Crear jerarquía de clases, verificar la visibilidad de miembro de la clase y del objeto.
  • Patrones: Bridge, Abstract Factory, adaptador, los visitantes, decorador.
  • Algunas de las preguntas de las entrevistas.

estructuras de datos dinámicos. STL, BOOST:

  • contenedores STL: vector, lista, establezca, mapa, deque, pila, unordered_set. Matices de trabajar con ellos. std :: shared_ptr, make_shared (), std :: unique_ptr.
  • Algoritmos, funtores, adaptadores función: buscar, copiar, find_if, eliminar, equal_to, bind2nd y así sucesivamente.
  • Los espacios de nombres. notación O grande.
  • BOOST: cómo compilar sus bibliotecas e incluirlos en un proyecto. shared_ptr, weak_ptr, make_shared, se unen, y así sucesivamente.

Práctica:

  • Trabaja con todos los contenedores principales y algoritmos.

manejo de excepciones:

  • La arquitectura de un programa con el manejo de excepciones.
  • Regeneración de excepciones, la captura (...), pila rebobinado secuencia y reglas. El tiempo de vida del objeto de excepción Throwed. dynamic_cast<>.

Práctica:

  • Patrón 'Cadena de Responsabilidad'.
  • Descripción parcial del proyecto final de carrera 'Tienda en línea' (sin hilos, bibliotecas y redes).

C ++ 11:

  • Lambdas, auto, rvalue, constructores móviles y operador de asignación. std :: move (), decltype, lista de inicialización uniforme, nullptr.

Práctica:

  • Compruebe las condiciones en las que el rendimiento de movimiento constructor será mejor que el constructor de copia hace.

La herencia múltiple:

  • Otra implementación del patrón de adaptador.
  • herencia virtual, las diferencias entre los compiladores. Las partes del objeto.
  • ¿Por qué C # y Java permiten herencia múltiple de interfaces de sólo.
  • Los fundamentos de la tecnología COM: IUnknown, QueryInterface, el registro de componentes, GetClassObject, regsvr32, CLSID.

Práctica:

  • Compruebe trampas de la colada tipo de void *.

bibliotecas dinámicas y estáticas:

  • Cómo exportar funciones y clases de biblioteca. Cómo incluirlos en un proyecto.
  • enlace explícito e implícito, de depuración.
  • Diseño de una aplicación multiplataforma.

Práctica:

  • Utilizar las bibliotecas en su proyecto 'Tienda en línea'.
  • La noción de un sistema de control de versiones. Git.

aplicaciones gráficas que utilizan la API de Win32. Qt GUI .:

  • ¿Cuál es la diferencia entre la aplicación de consola y la aplicación de la ventana. bucle infinito, mensajes, procedimiento de ventana, las diferencias entre las funciones de SendMessage y postMessage? * .rc archivo de recursos.
  • Cómo crear una ventana personalizada y definir un mensaje personalizado.
  • Cómo trabajar con controles: botones (radio, control, cuadro de grupo), COMBOBOX, editar, etc (incluyendo Qt).
  • Función InitCommonControls.
  • Eventos y ranuras en Qt. Cómo subclase una ventana (sustituir un procedimiento de ventana) (incl. Qt), desplazando la ventana gráfica en la ventana. Crear el control de usuario, el estilo OwnerDraw.
  • HDC compatible.

Práctica:

  • Crear tres versiones (cada uno de ellos se extiende la versión anterior) de una aplicación 'VectorDraw', que atrae a las formas simples y los almacena como imagen utilizando los principios de gráficos vectoriales. Desarrollar un formato de archivo y la arquitectura del programa (usando polimorfismo) para lograr la compatibilidad con versiones anteriores.

Procesos y subprocesos:

  • espacios de direcciones del sistema operativo del usuario y. objetos del kernel.
  • ¿Cuándo se debe utilizar hilos y qué número de ellos puede acelerar su programa. contexto del hilo.
  • Hilos, volátil y optimización del compilador.
  • Hilos (y procesos) de sincronización utilizando la API de Win32. Exclusiones mutuas, eventos, semáforos, temporizadores temporizador. WaitForSingleObjects y otros. La familia de funciones Interlocked- atómicas. ¿En qué orden se deben desbloquear un mutex?
  • TLS (almacenamiento local de subprocesos). Reenterable y el código de seguridad hilo.
  • Procesos: prioridad, multitarea preventiva, cómo el proceso hijo hereda asas.
  • IPC (comunicaciones entre procesos), la asignación de memoria, tuberías, compartió secciones en la biblioteca.
  • Funciones para la memoria virtual, instantánea de procesos, hilos, bibliotecas.
  • Hilos de sincronización usando C ++ y 11 de refuerzo. std :: hilo (diferencia de impulso :: hilo), mutex, lock_guad, condition_variable, unique_lock, boost :: crono.

Práctica:

  • Descripción de la aplicación: Una aplicación de consola quiere acelerar un poco de trabajo. Debe crear e inicializar en el arsenal y "principal" int, se divide a partes dependiendo del número de núcleos de CPU. Iniciar el mismo número de subprocesos y darles sus partes de datos. Mientras tanto, el "principal" sigue haciendo su trabajo y esperar a que las discusiones. Mostrar los datos en el "principal".
  • Cómo sincronizar la siguiente cola: Un hilo de entrada envía secuencia ordenada de estructuras de datos para tres subprocesos de trabajo. Ellos hacen el mismo trabajo, pero el tiempo para procesar, cualquier objeto puede ser diferente. Los hilos de trabajo procesan los objetos y los dan a un hilo de salida para volver a montar sucesión de datos de un pedido anterior. hilo GUI muestra datos.
  • Cómo crear una cola de mensajes personalizados. WAIT_TIMEOUT.
  • Cómo utilizar una ventana para enviar mensajes a un hilo.
  • Cómo utilizar TLS.
  • Cómo utilizar las funciones atómicas.
  • Cómo redirigir la salida de la aplicación de consola a otro proceso - lo mismo que hace IDE cuando se lance un compilador.
  • C ++ 11: uso de la rosca, mutex, condition_variable, lock_guard, clases unique_lock.
  • Lo que las bibliotecas se utilizan en la aplicación y dónde están?
  • Los interiores de DllMain. Cómo bloquear, cómo usarla.

Las aplicaciones de red:

  • Protocolos (IP, TCP, UDP, HTTP), tomas de corriente, el bloqueo y sin bloqueo de llamadas utilizando winsock2 biblioteca. seleccionar, WSAAsyncSelect, WSAEventSelect.
  • estados de conexión TCP y los errores de manipulación.

Práctica:

  • servidor de eco simple.
  • Networking versión de Tick-tack-dedo del pie.
  • Mini Git.

proyecto final de carrera 'Tienda en línea':

aplicación cliente-servidor: un servidor, un cliente para comprar productos, varios clientes para comprarlos. En primer servidor capaz de vender sólo dos categorías de productos. La aplicación debe tener capacidad de agregar plug-ins - Librerías de clases para trabajar con algunas otras categorías de productos. La aplicación debe reconocer su primer lanzamiento para establecer el capital inicial para comenzar sus trabajos (productos de la compra).

Servidor inicia su labor mediante el análisis directorio actual a la lista de plug-ins (bibliotecas). Cuando se descubre una nueva biblioteca, que tiene que ser capaz de trabajar con la nueva categoría de producto sin recompilación. La aplicación tiene que soportar la arquitectura de plataforma cruzada: cada rutina dependiente de la plataforma (hardware), los recursos deben estar separados de la lógica.

La aplicación tiene que ser protegido de usuario y de los errores de red

Esta institución educativa ofrece programas en:
  • Inglés
Duración y Precio
Este curso es Online
Start Date
Fecha de inicio
oct. 2019
Duration
Duración
60 
Price
Precio
720 USD
24 sesiones, 2,5 horas, 2 veces a la semana
Information
Deadline
Locations
Ukraine - Kiev, Kyiv City
Fecha de inicio : oct. 2019
Fecha límite de inscripción Contacto
Fecha de finalización Contacto
Dates
oct. 2019
Ukraine - Kiev, Kyiv City
Fecha límite de inscripción Contacto
Fecha de finalización Contacto