curso professional n.
Skip this Video
Loading SlideShow in 5 Seconds..
Curso Professional PowerPoint Presentation
Download Presentation
Curso Professional

play fullscreen
1 / 518
Download Presentation

Curso Professional - PowerPoint PPT Presentation

faolan
143 Views
Download Presentation

Curso Professional

- - - - - - - - - - - - - - - - - - - - - - - - - - - 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.