1 / 518

Curso Professional

Curso Professional. Lucas Euzébio Machado. Tópicos do Curso. C++, Algoritmos e Estruturas de Dados (36) Computação Gráfica (36) Programação Distribuída (6) Física (6) Inteligência Artificial (6) Fundamentos de Programação de Jogos (6) Projeto Final (24).

faolan
Télécharger la présentation

Curso Professional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso Professional Lucas Euzébio Machado

  2. Tópicos do Curso • C++, Algoritmos e Estruturas de Dados (36) • Computação Gráfica (36) • Programação Distribuída (6) • Física (6) • Inteligência Artificial (6) • Fundamentos de Programação de Jogos (6) • Projeto Final (24)

  3. Tópicos para C++, Algoritmos e Estruturas de Dados • Variáveis, Ponteiros, Referência, Alocação e Liberação de Memória • Testes de condições • Loops • Funções • Módulos, Compilação e Link-Edição • Orientação a Objetos • Classes e Structs • Encapsulamento, Herança e Polimorfismo • Construtores e Destrutores • Exceções • Funções e Variáveis estáticas • Recursão • Lista Encadeada, Fila e Pilha • Árvore Binária • Grafo • Hashtable • Templates • Operator Overloading • Lendo e Gravando Arquivos • Multithreading

  4. Variáveis

  5. Ponteiros • Ponteiros são variáveis que armazenam endereços de memória.

  6. Variáveis de referência • Referências servem como um segundo nome para um objeto. Elas permitem acesso indireto de forma semelhante a ponteiros.

  7. Alocação de Memória • Para alocar memória da heap:

  8. Liberando memória

  9. Vetores • Vetores são agregações de elementos de um mesmo tipo que ocupam a memória de forma sequencial e adjacente.

  10. Vetores • Uma variável vetor armazena na realidade o endereço de memória do primeiro elemento do vetor.

  11. Vetores • Vetores podem ser multidimensionais

  12. Testes de Condições

  13. Testes de Condições

  14. Loops • Instruções usada para causar repetições de trechos de código

  15. Loops

  16. Exercício • Crie um programa que gera um buffer de inteiros de 10 posições. Cujos valores sofrem um decremento de 10 até 1. • Adicione um trecho de código que busca pelo numero 4 no vetor e salva o endereço da posição do vetor em um ponteiro.

  17. Exercício • Crie um programa que crie uma matriz 4x4 identidade usando um buffer bidimensional.

  18. Funções • Funções são subprogramas que realizam operações definidas por usuários. • Ferramenta fundamental para redução de complexidade e reuso de código. • Em qualquer projeto, funções serão utilizadas sem que se conheça suas implementações internas.

  19. Funções

  20. Exercício • Crie uma função que adiciona dois vetores de 4 elementos e retorna o resultado em um terceiro vetor

  21. Módulos, Compilação e Link-Edição • Módulos permitem a divisão de um sistema em diferentes partes, cada uma responsável por uma tarefa específica. • Um módulo para nós será definido como um .h e um .cpp. • O arquivo .h possui declarações. • O arquivo .cpp possui implementações.

  22. Exemplo de um modulo Vector3.h Vector3.cpp

  23. Usando um módulo

  24. Usando Módulos • Ao usar include é incluído todo o arquivo de texto na linha chamada.

  25. Compilação • Ao compilar um arquivo de implementação .cpp é gerado um arquivo .obj com código binário e tabelas com referências externas ainda não resolvidas e símbolos públicos.

  26. Link-Edição • A link edição resolve referências externas e junta todo o código em um só código binário gerando assim o arquivo executável.

  27. Exercício • Implemente um módulo Vector4.h e Vector4.cpp que possui as funções de adição, subtração e multiplicação de vetores de 4 elementos e salvando o resultado em um outro vetor. • Crie um arquivo .cpp com a main e inclua o header do Vector4.h. Compile ambos arquivos .cpp e gere o executável.

  28. Orientação a Objeto • Um objeto é uma entidade(podendo se basear em algo concreto ou abstrato) que possui um comportamento ou representa algo. • Você interage com um objeto através de uma interface formada por funções. Isso permite uma interação bem comportada. • A divisão de um sistema em objetos permite uma enorme redução em complexidade e aumento em reusabilidade.

  29. Exemplo de um sistema dividido em objetos

  30. Classes • Objetos são representados em software através de classes

  31. Encapsulamento • Apenas os membros públicos de uma função podem ser acessados por outros objetos.

  32. Encapsulamento • Fundamental para redução de complexidade. • Você chama um método de uma classe e um problema é resolvido para você. Não há necessidade de saber como o problema foi resolvido. • Permite interação comportada. Como você controla o acesso às variáveis através de funções não é possível partes externas do programa agirem de forma errada com suas variáveis.

  33. Exercício • Implemente a classe AIManager. Essa classe possui duas funções. AddObject e Think. A função AddObject recebe uma string com um nome, uma posição x e uma posição y. A função Think mostra na tela os objetos adicionados.

  34. Herança • Certos objetos compartilham características porém possuem particularidades suficientes de forma que precisam de novos objetos para serem apropriadamente representados.

  35. Herança

  36. Herança • O objeto Person e o objeto Stone são ambos objetos de cena que podem ser desenhados na tela. Então ambos podem pertencer à mesma classe de objetos SceneObject. • Se por exemplo um SceneObject possuir uma posição 3d. Tanto Person quanto Stone possuirão essa variável de posição pois a posição é uma variável que existe em todo objeto da classe SceneObject.

  37. Herança

  38. Exercício • Reimplemente o exercício anterior fazendo o AIManager ter funções para adicionar Dragon e Orc que são classes derivadas de AIEntity. A classe AIEntity possui membros públicos para armazenar um nome e uma posição x e y. • A classe Dragon tem uma string com o tipo de baforada do dragão e a classe Orc possui um inteiro que indica a arma sendo usada. • Implemente a função Think para tratar dos tipos específicos e desenhar suas partes específicas.

  39. Polimorfismo • Quando um conjunto de classes deriva de uma mesma classe base, todo o conjunto compartilha uma interface. • É possível escrever partes de código levando em consideração apenas classes base de determinados objetos. • Isso é vantajoso para aumentar o reúso no código.

  40. Polimorfismo

  41. Polimorfismo

  42. Exercício • Reimplemente o AIManager para receber objetos AIEntity. Crie uma função virtual pura em AIEntity chamada Think que imprime os dados da entidade. Faça a classe Orc e Dragon implementarem a função Think. • Mude o AIManager para fazer uso das funções Think dos objetos.

  43. Construtores e Destrutores • Construtores são métodos de uma classe chamada para “construir” a classe. Todo objeto criado tem seu construtor chamado.

  44. Construtores e Destrutores • É possível definir diferentes tipos de construtores

  45. Construtores e Destrutores • Destrutores fazem o trabalho inverso dos construtores. Eles fazem a destruição do objeto, liberando recursos adquiridos como memória alocada, arquivos abertos, etc.

  46. Construtores e Destrutores • Em classes base use destrutores virtuais. Ao deletar um objeto usando um ponteiro base o comportamento é indefinido caso o destrutor da classe base não seja virtual.

  47. Exceções • Eventos anormais são normais.  • Programas executam normalmente até que algum problema ocorra como falta de memória, acesso à uma área de memória ilegal, etc etc etc etc etc etc etc etc etc etc..... • É possível testar esses problemas ou exceções usando ifs ou fazendo uso de ferramentas de C++ criadas específicamente para tratar de exceções.

  48. Exceções • Ao detectar uma anomalia, você gera uma exceção através da operação throw.

  49. Exceções • Um exceção é uma classe

  50. Exceções • Para capturar uma exceção deve-se usar o operador try e catch.

More Related