C ++ fundamentos

Infopulse University Ukraine

Descrição do Programa

Leia a Descrição Oficial

C ++ fundamentos

Infopulse University Ukraine

Esboço de Curso

noções básicas:

  • O que é um computador, comando de computador, uma aplicação e uma linguagem de programação? A evolução dessas noções.
  • análise detalhada da execução do programa de computador: descrevendo as funções de sistema operacional, drivers, CPU, memória, ônibus, teclado, mouse e outros componentes
  • As diferenças entre as linguagens de alto e baixo nível de programação (código de máquina, assembler, C, C ++, Java, SQL, HTML).
  • Como para começar a escrever um programa. editor de texto, compilador, vinculador.
  • IDEs (Ambientes de Desenvolvimento Integrado).

Começando:

  • Explicação da anterior linha por linha de código do programa.
  • O pré-processador - ponto de entrada do programa.
  • Introduzindo regras primeira codificação. Erros, como lidar com eles.
  • Os tipos de dados (tamanho, escala), a Declaração de variáveis. regras de nomenclatura, a legibilidade do código e estilo de codificação bom.
  • A pilha (fila LIFO). Variáveis ​​visibilidade e duração de vida. As variáveis ​​globais e locais. estilo de codificação ruim - uso de variáveis ​​globais. Visibilidade do operador extensão "::".
  • Variáveis ​​e constantes, a diferença entre a inicialização e atribuição.
  • formatos binários, decimais e hexadecimais.

Prática:

  • "Olá Mundo!" programa.
  • Como receber dados de entrada do usuário e mostrá-lo. de diálogo do usuário.

As primeiras ferramentas:

  • As noções de operador, expressão e instrução. Correcta importância o uso de terminologia para passar entrevista bem sucedida.
  • operadores aritméticos, operadores de comparação e as regras da sua utilização. Assinado e tipos não assinados. Explícita e implícita conversão de tipo. Pós e pré-incremento. Prioridade e associatividade. operadores condicionais (if, else if), operador ternário, switch (cair conceito).
  • Loops: para, ao mesmo tempo, fazer enquanto. loops aninhados (i, j, k contadores de ordem).
  • Debug: Como traçar uma execução do programa, os pontos de interrupção, F5, F10, relógios.

Prática:

  • Algumas perguntas das entrevistas.
  • Uma calculadora simples. Examinar a capacidade de processar qualquer entrada do usuário.
  • Como para reduzir o número de possíveis erros. O primeiro conceito de design de aplicação multi-plataforma.
  • Desenho de formas: cheio, vazio, com espessura de fronteiras definidas, retângulos, triângulos, losango.
  • Como para exibir o texto no meio do rectângulo. posicionamento de tela
  • Diversos formatos em uma fileira.
  • animações simples (formas em movimento), getch (), a primeira ferramenta para obter informações necessárias.
  • Encontrar e processar os números específicos da gama.
  • O primeiro programa 'Desenho', que poderia trabalhar eterna; ele deve mostrar o menu, tirar qualquer forma de escolha do usuário ou terminar.

Arrays, ponteiros, referências, algoritmos:

  • Pilha de agregados com base, o seu operador de dimensão, o índice, sizeof (), inicialização de matriz.
  • Ponteiros, como é que iArray [i] expressão realmente funciona, o que significa que o tipo de ponteiro para um compilador. alocação dinâmica de memória, montão, novo, apagar, apagar [] operadores. Todos os ponteiros relacionados nuances: ponteiros não inicializados, enforcados ponteiros (esquecidas), vazamentos de memória (e ferramentas para detectá-lo). Ponteiro para tudo - void *.
  • Referências, as diferenças entre eles e ponteiros.
  • Classificar, pesquisar e algoritmos de comparação, o seu desempenho. O profiler. Compilar e erros de execução.
  • matrizes dinâmicas (que pode mudar o tamanho em tempo de execução). arrays multidimensionais. -

Prática:

  • Algoritmos: busca, o valor mínimo de busca, valor máximo, contam itens, soma, média.
  • algoritmos mais complicados: trabalhar com arrays multidimensionais, criação de histograma, rotação de matriz. Como olhar para a frente a partir da posição atual na matriz.
  • Vários algoritmos de ordenação com análise de seu desempenho.
  • Primeiro jogo: tic-tac-toe. Descrição: O usuário terá opção de escolher '0'-s ou' X'-s e definir a quantidade de rodadas para jogar. O programa deve determinar o vencedor da rodada atual e manter o número total de vitórias, empates e derrotas.
  • Programa também devem ser protegidos contra erros do usuário (com uma explicação deles), tem uma boa usabilidade e interface. Avançado: usar a cor para a saída de texto.

Funções:

  • Por que precisamos em funções?
  • Passando argumentos de função por valor, por endereço e por referência.
  • Primeiro, olhe para o espaço de endereço do aplicativo e formato de arquivo executável, um custo da chamada de função.
  • Funções sobrecarga, parâmetros padrão.
  • Recursão, pilha de chamadas, estouro de pilha, integer overflow.
  • Ponteiros e modificador const: a diferença entre ponteiro constante e ponteiro para constante.
  • Um bom estilo de codificação. Por que é tão importante.

Prática:

  • medição de desempenho do algoritmo. Como obter uma precisão razoável.
  • Algumas tarefas de entrevista (uso de recursão).
  • Reescrever Tick_tack-toe, calculadora e aplicativos de desenho usando funções.

Cordas:

  • Um aplicativo de console, buffer do sistema e interrupções de teclado.
  • funções de biblioteca: strcmp, strlen, strtok_s, strstr.
  • Como formatar a saída de texto (em C e C ++), cin.getline.
  • Char e wchar_t, zero, string terminada. matriz dinâmica de cordas.

Prática:

  • Criar funções auxiliares para proteger seu aplicativo de entrada errada do usuário:
  • evitar a entrada de caracteres, em vez de dígitos;
  • evitar entrar mais símbolos do que a capacidade tampão;
  • estar pronto para a entrada de texto extra-grande
  • Quantas vezes uma determinada palavra presente em uma frase?
  • O usuário digita qualquer número de sentenças, a aplicação analisa-los, cria matriz de palavras a partir dessas frases, conta o número palavras ot, encontra o mais longo eo mais curto, classificará palavras de comprimento e em ordem alfabética.
  • Criar app "rolagem cadeia de texto" com a opção de suspender o ciclo e atualizar o conteúdo.
  • Avançado: Implementar algoritmo palavra-wrap.

operações bit a bit:

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

Prática:

  • Armazenar em um inteiro variável quatro números de diferentes gamas (0-5, 0-100, 10-60, 100- 40000).
  • Mostrar representação binária do valor inteiro
  • O que é o maior número pode ser armazenado em um byte?
  • Levante 2 elevado à potência de 200.
  • Liste todas as unidades lógicas de PC.
  • Criptografar e descriptografar texto inserido.

Estruturas, enumerações, sindicatos, campos de bits:

  • Quais são os tipos definidos pelo usuário. As diferenças entre С e С ++. Primeiro contato com programação orientada a objetos.
  • armazenamento Universal para cada tipo de dados.
  • enum como declaração compacta de constantes relacionadas.

Prática:

  • Como usar sindicatos para enviar e receber dados de qualquer tipo.
  • Desenvolver aplicativos "estudantes" para armazenar e processar dados pessoais. A estrutura de "Student" (armazenamento de dados) tem que ter seguintes campos: nome, sobrenome, idade, 5 pontos (matriz), Mark média. Implementar operações simples com array de objetos: pesquisar, ordenar, adicionar, excluir, editar. Criar um algoritmo de inicialização automática de matriz de estruturas (incluindo nomes). Você entrará tamanho da matriz de teclado. Advanced Task: classificar os dados e mostrar usando ponteiros para estruturas, não é em si objetos.

directivas de pré-processador:

  • Como e onde deve ser definido restrições críticas, constantes.
  • Como incluir um unidades de compilação dos mesmos ou de diferentes locais, impedindo a partir de um arquivo incluindo várias vezes.
  • classes de memória: extern, estático, cadastre-se, automático.
  • Variáveis ​​estáticas em funções e arquivos.
  • compilação condicional. desenvolvimento de plataforma cruzada.
  • Usando # e ## operadores de depuração.
  • Macros: como escrever uma macro, a favor e contra, e como escrever testes de unidade convenientes.

Prática:

  • Criar várias .h * e * arquivos .cpp e ligá-los corretamente.
  • Escrever uma macro para a avaliação de qualquer declaração de desempenho.

Arquivos:

  • O papel do sistema operacional, drivers e aplicação em operações de IO, contabilidade referências, modos de operação de arquivo.
  • Que tipos de erros relacionados arquivos devem ser verificados na aplicação de produção.
  • Ler, escrever e as operações de posicionamento. tamanho e formato do arquivo. saída tamponada.
  • As diferenças entre o texto e modos de abertura de arquivos binários. Qual deve ser usado.

Prática:

  • Como explorar o conteúdo de unidades e diretórios.
  • Como copiar um arquivo grande.
  • Gravar no arquivo de dados criptografados de qualquer formato. Leia-o, descriptografar e show.
  • Criar um aplicativo como lembrete (diário, organizador). Descrição: O usuário digita algumas informações e define o tempo para lembrar sobre isso. Uma vez usuário inicia este aplicativo, ele verifica a data e hora atual, olha através de todos os registros armazenados em um arquivo. Se houver alguma coisa para lembrar, neste momento ele exibe uma mensagem de lembrete.

projeto do curso:

  • gerenciador de arquivos simples que pode pesquisar e exibir o conteúdo de cada arquivo (como é, sem reconhecimento do formato de arquivo), e editar determinados arquivos. O estudante deve desenvolver o seu próprio formato de arquivo para armazenamento e processamento de dados - uma grande variedade de estruturas 'Student' (ver descrição acima na seção prática das Estruturas).
  • complexidade avançada: Adicionar campo "experiência" com a estrutura 'Student' (uma matriz de caracteres no heap) e seu comprimento. Nem todos os alunos têm a experiência, ele deve complicar formato de arquivo.
  • O programa deve ter uma interface amigável e operar em dois modos:
  • Criar um arquivo e encontrá-lo no sistema de arquivos.
  • abrir, ler, adicionar ou excluir registro, editar, classificar os dados, com base em seus vários critérios especificados pelo usuário.
  • Trabalhar em qualquer modo, o usuário deve ser capaz de ver o menu de contexto. App deve ser protegido de quaisquer erros do usuário e não tem qualquer tipo de vazamentos de memória (memória heap, descritores).

C ++ avançada

Duração do curso: 120 horas ponteiros de função:

  • Uso dos ponteiros de função como critério de pesquisa e comparação, que podem ser passados ​​como argumentos para pesquisar ou classificar algoritmos. Predicados.
  • Adaptar a sua funcionalidade para interface existente, por exemplo: classificar qualquer matrizes utilizando a função qsort_s. funções de retorno, typedef.
  • Como estender a funcionalidade do seu programa sem recompilar-lo. Custo do trabalho de controle de qualidade extra.

Prática:

  • Ordenar "estudantes" (ver prática curso base) por vários critérios recebidos durante a execução.
  • Rewrite app 'calculadora' usando matriz de ponteiros de função.

funções de modelo:

  • Tipo de deduzir, argumentos typecast e função, função de modelo sobrecarga.
  • parâmetros não-tipo.

Prática:

  • Desenvolver um aplicativo que classifica matrizes de inteiros, caracteres e dobra o uso de funções do modelo.
Funções com número variável (indefinido) de parâmetros:
  • O papel do primeiro parâmetrô, especificadores de formato, va_list.
Prática:
  • Desenvolver uma função de "mini printf".

Classes (conceitos básicos):

  • Filosofia de design de classe e uso.
  • Construtores, destruidores, construtores sobrecarregados, interface de classe como um conjunto de regras para trabalhar com ele ...
  • Como rastrear todas as chamadas para funções de classe no programa.
  • Padrão funcionalidades função de classe e como desativá-lo.
  • Composição: agregação e conhecido, um diagrama de interação, UML.
  • regra de inicialização. Como trabalhar com recursos. este, público, privado.
  • A #ifndef pré-processador e directivas #pragma dependente do compilador. O que é um padrão c ++; Classe A tem objeto da classe B, mas a classe B possui um ponteiro para A - como resolver isso. Amigos: Como uma função ou classe pode se tornar um amigos para outra classe. As relações entre "amigos".

Prática:

  • Desenvolver classes de array e de linha.
  • Outra ferramenta: BackUp classe, que pode ser usado por qualquer cliente para reescrever com segurança qualquer arquivo, e segura recuperar um de dados (um proxy entre um cliente e um arquivo);

Cópia construtor e operador de sobrecarga:

  • Quando você precisa dessas ferramentas? cópia superficial e profunda.
  • Como copiar um objeto que tem um outro objeto dentro.
  • construtores explícitos.
  • Built-in e tipos de dados definidos pelo usuário. Operador sobrecarga regras.

Prática:

  • Sobrecarga de +, =, <<, (typecast), * (indirecta), novo, ++, <, == and [] operators.

lista ligada, classes de modelo, introdução à STL:

  • Como lista ligada funciona. Diferença entre lista e matriz, comparação de suas performances.
  • Quais são os níveis de cache da CPU, acerto de cache e cache de falta. Por ligada listas são bastante mal do que bem.
  • Introdução ao STL: contentores, iteradores.
  • classes de modelo: * arquivos .hpp, construtores com base em outros objetos classes.
  • Usando operadores sobrecarregar em templates. Modelos de especialização.

Prática:

  • Desenvolver classe List stl-like.

Uso o modificador 'const' em classes:

  • const_cast, mutável, diferença entre o "constante real 'e campo somente leitura.
  • funções de membro const.

Prática:

  • Desenvolver uma classe com membros const;

membros da classe estática:

  • construtor privado, como contar todos os objetos de uma classe. O que é um padrão? padrão Singleton. Como deve ser projetado para não ser um anti-padrão.
  • funções de membro estático.
  • Introdução aos ponteiros inteligentes, sobrecarga do operador ->.
  • Ponteiros para os membros da classe.

Prática:

  • Contar o número de todos os objetos da classe.
  • Desenvolver uma classe Smartptr simples.

Herança e polimorfismo:

  • membros da classe protegidas, herança privada e protegida.
  • Inicialização do objeto filho.
  • Trabalhar a partir do ponteiro para a classe base. Novos símbolos UML.
  • funções virtuais, destructor, classe base abstrata, interface, vptr, vtbl
  • Estática e dinâmica de ligação, static_cast, dynamic_cast, typeid, RTTI.
  • Diferença entre herança da funcionalidade (e dados) e herança de interface.
  • Quando um processo de destruição virtual é uma solução ruim. ABI - Application Binary Interface.

Prática:

  • Criar hierarquia de classes, verificar a visibilidade do membro da classe e do objeto.
  • Patterns: ponte, Abstract Factory, adaptador, visitante, decorador.
  • Algumas perguntas de entrevistas.

estruturas de dados dinâmicos. STL, Boost:

  • contêineres STL: vetor, lista do jogo, mapa, deque, Pilha, unordered_set. Nuances de trabalhar com eles. std :: shared_ptr, make_shared (), std :: unique_ptr.
  • Algoritmos, functors, adaptadores de função: encontrar, copiar, find_if, remover equal_to, bind2nd e assim por diante.
  • Namespaces. notação Big O.
  • REFORÇO: como compilar suas bibliotecas e incluí-los em um projeto. shared_ptr, weak_ptr, make_shared, bind, e assim por diante.

Prática:

  • Trabalhar com todos os recipientes principais e algoritmos.

Tratamento de exceções:

  • A arquitetura de um programa com a manipulação de exceção.
  • excepções rethrowing, catch (...), pilha de rebobinagem sequência e regras. O tempo de vida do objeto de exceção Throwed. dynamic_cast<>.

Prática:

  • Padrão "Chain of Responsibility '.
  • descrição parcial do projecto de diploma "loja on-line '(sem fios, bibliotecas e redes).

C ++ 11:

  • Lambdas, auto, rvalue, construtores móveis e operador de atribuição. std :: move (), decltype, lista de inicializador uniforme, nullptr.

Prática:

  • Verifique as condições em que o desempenho do construtor movimento vai ser melhor do que construtor de cópia faz.

herança múltipla:

  • Outra implementação do padrão Adapter.
  • herança virtual, as diferenças entre compiladores. As partes do objecto.
  • Por que C # e Java permitem herança múltipla a partir de apenas interfaces.
  • Os fundamentos da tecnologia COM: IUnknown, QueryInterface, o registro de componentes, GetClassObject, regsvr32, CLSID.

Prática:

  • Verifique armadilhas de fundição tipo de void *.

bibliotecas dinâmicas e estáticas:

  • Como exportar funções e classes da biblioteca. Como incluí-los em um projeto.
  • vinculação explícita e implícita, de depuração.
  • Projeto de uma aplicação multi-plataforma.

Prática:

  • Usar bibliotecas em seu projeto "Loja on-line '.
  • A noção de um sistema de controle de versão. Git.

aplicações GUI usando Win32 API. Qt GUI .:

  • Qual é a diferença entre o console app e app janela. loop infinito, mensagens, procedimento janela, as diferenças entre as funções SendMessage e PostMessage? arquivo de recurso * .rc.
  • Como criar uma janela personalizada e definir uma mensagem personalizada.
  • Como trabalhar com controles: botões (rádio, cheque, groupbox), COMBOBOX, EDIT, etc. (incluindo Qt).
  • Função InitCommonControls.
  • Eventos e slots Qt. Como subclasse uma janela (substituir um procedimento de janela) (incl. Qt), deslocando a janela de exibição na janela. Criando o controle de usuário, estilo OwnerDraw.
  • HDC compatível.

Prática:

  • Criar três versões (cada um estende a versão anterior) de um app 'VectorDraw', que desenha formas simples e os armazena como imagem usando os princípios de gráficos vetoriais. Desenvolver um formato de arquivo e arquitetura de programa (usando polimorfismo) para alcançar compatibilidade com versões anteriores.

Processos e threads:

  • espaços de endereços OS do usuário e. objetos kernel.
  • Quando você deve usar threads e que número deles pode acelerar o seu programa. contexto da discussão.
  • Threads, volátil e otimização do compilador.
  • Threads (e processos) de sincronização usando Win32 API. Exclusões mútuas, eventos, semáforos, temporizadores waitable. WaitForSingleObjects e outros. A família de funções Interlocked- atômicas. Em que ordem de semáforos deve ser desbloqueado?
  • TLS (armazenamento local de segmento). Reenterable e código de thread-safe.
  • Processos: prioritários, multitarefa preemptiva, como processo filho herda alças.
  • IPC (comunicação entre processos), mapeamento de memória, tubos, compartilhada seções na biblioteca.
  • Funções para a memória virtual, instantâneo dos processos, threads, bibliotecas.
  • sincronização tópicos usando c ++ 11 e impulso. std :: thread (diferença de boost :: thread), mutex, lock_guad, condition_variable, unique_lock, boost :: crono.

Prática:

  • Descrição do aplicativo: A aplicação de consola quer acelerar algum trabalho. Você deve criar e inicializar na matriz e 'main' int, dividi-lo em partes, dependendo do número de núcleos de CPU. Comece o mesmo número de threads e dar-lhes as suas partes de dados. Enquanto isso, o 'main' continua a fazer o seu trabalho e esperar por threads. Mostrar os dados do 'main'.
  • Como sincronizar o seguinte fila: Um segmento de entrada envia sequência ordenada de estruturas de dados para três segmentos de trabalho. Eles fazem o mesmo trabalho, mas o tempo para processar, qualquer objeto pode ser diferente. threads de trabalho processar objetos e dar-lhes um fio de saída para remontar sequência de dados em uma ordem anterior. thread de GUI apresenta dados.
  • Como criar uma fila de mensagem personalizada. WAIT_TIMEOUT.
  • Como usar uma janela para deixar mensagem para uma lista de discussão.
  • Como usar TLS.
  • Como usar funções atômicas.
  • Como redirecionar a saída de aplicativo de console para outro processo - a mesma coisa que IDE faz quando lança um compilador.
  • C ++ 11: o uso de fios, de exclusão músua, condition_variable, lock_guard, aulas unique_lock.
  • Quais bibliotecas são usadas na aplicação e onde eles estão?
  • Os interiores de DllMain. Como para bloqueá-lo, como usá-lo.

aplicações de rede:

  • Protocolos (IP, TCP, UDP, HTTP), tomadas, bloqueando e chamadas sem bloqueio usando Winsock2 biblioteca. selecionar, WSAAsyncSelect, WSAEventSelect.
  • estados de conexão TCP e erros de manipulação.

Prática:

  • servidor de eco simples.
  • Networking versão do Tick-tack-toe.
  • Mini Git.

projecto de diploma 'store Online':

aplicação cliente-servidor: um servidor, um cliente para comprar produtos, vários clientes para comprá-los. No primeiro servidor capaz de vender apenas duas categorias de produtos. A aplicação deve ter capacidade de adicionar plug-ins - bibliotecas com classes para trabalhar com algumas outras categorias de produtos. O aplicativo deve reconhecer o seu primeiro lançamento para definir o capital inicial para começar o seu trabalho (compra de produtos).

Servidor inicia o seu trabalho ao analisar diretório atual para a lista de plug-ins (bibliotecas). Quando se descobre uma nova biblioteca, ele tem que ser capaz de trabalhar com a nova categoria de produto sem recompilação. O aplicativo tem que suportar a arquitetura multi-plataforma: todas as plataformas de rotina dependente (recursos, hardware) devem ser separadas da lógica.

O aplicativo tem que ser protegida de usuário do e erros de rede

Essa escola oferece programas em:
  • Inglês
Duração e Preço
Este curso é Online
Start Date
Data inicial
Out. 2019
Duration
Duração
60 horas
Price
Preço
720 USD
24 sessões, 2,5 horas, 2 vezes por semana
Locations
Ucrânia - Kiev, Kyiv City
Data inicial : Out. 2019
Prazo para inscrição Solicitar Informações
Data de conclusão Solicitar Informações
Dates
Out. 2019
Ucrânia - Kiev, Kyiv City
Prazo para inscrição Solicitar Informações
Data de conclusão Solicitar Informações