Tópicos Especiais em Linguagem de Programação III Programação Visual Orientada a Eventos com aplicações gráficas e em Inteligência Artificial Apresentação da Disciplina 1 Ementa Apresentação da disciplina Histórico das linguagens de programação Programação Visual Orientada a Eventos Visual Basic – Linguagem Prática com VB C++ Builder Prática com C++ Builder Delphi e Object Pascal Prática com Delphi Busca, Redes Semânticas Lógica Fuzzy, Redes Neurais, Agentes Aplicações gráficas – OpenGL VBA VBA com Excel VBA com Word e PowerPoint Prática em Laboratório Calendário Formalização da Ementa 2 Motivação para a Disciplina Linguagens de Programação são difíceis Linguagens de Programação permanecem pequeno tempo “em moda” O número de Linguagens de Programação existentes é gigantesco e vai continuar a crescer Freqüentemente a carreira nos obriga a parar de programar por algum intervalo de tempo (às vezes para sempre) Parando de programar nossa habilidade de programação encolhe (às vezes desaparece) Existem enormes quantidades de programas disponíveis, porém em diversas Linguagens de Programação e não compatíveis uns com outros 3 Motivação para a Disciplina (cont.) Profissionais de Ciências Exatas precisam programas computadores Protótipos são fundamentais 4 Constatação Diretores, Gerentes, Chefes e Professores tendem a perder a capacidade de programar e tornam-se dependentes de terceiros para se comunicar usando computadores 5 Tipos de programadores Programadores tradicionais que sabem tudo ou quase tudo de determinada Linguagem de Programação Programadores de microcomputadores que não sabem programar Sistemas mas sabem tudo, ou quase tudo, de uso de aplicativos, instalações, telas, opções, etc. Programadores incompetentes Programadores que conseguem resolver problemas pessoais e empresariais 6 Tipos de programas Sistemas com longa vida útil sendo desenvolvidos durante largos períodos de tempo Sistemas de Tratamento da Informação Sistemas de Cálculo Outros Sistemas de apoio à decisão com pequena vida útil, sendo úteis para um momento específico e, portanto, tendo de ser desenvolvidos em curtíssimo período de tempo 7 Sistemas de Tratamento da Informação Geralmente são entendidos por todos, não havendo complexidade na definição do problema ou solução As dificuldades são: Captura das especificações Interação com o usuário Gerenciamento da Informação 8 Sistemas de Cálculo Geralmente não apresentam complexidade na interação com o usuário ou no gerenciamento da informação As dificuldades são: Captura das natureza do problema a resolver Obtenção do conhecimento técnico para a solução (geralmente englobando conhecimentos matemáticos, físicos, químicos, estatísticos, de cálculo numérico, etc.) Implementação de uma solução a custos computacionais razoáveis 9 Sistemas de apoio à decisão Sistemas de Apoio à Decisão (“Decision Support Systems – DSS”) são uma classe específica de sistemas de informação computadorizada que apóia atividades de tomada de decisão em negócios e organização. Com eles os tomadores de decisão obtém informação útil dos dados brutos, documentos, conhecimento pessoal e/ou modelos de negócios para identificar e resolver problemas e tomar decisões. 10 Sistemas de apoio à decisão (cont.) As informações típicas que uma aplicação de apoio à decisão pode obter e apresentar são: Acesso ao patrimônio de informações da organização, incluindo fontes de dados herdadas de antigas aplicações, fontes de dados relacionais, cubos, data warehouses e data marts. Medidas de desempenho (vendas, produção, retrabalho) entre um período de tempo e o próximo. Projeções de resultados financeiros baseadas em projeções de produção e/ou vendas. Conseqüências de diferentes alternativas de decisão, a partir da experiência em ambientes o contextos tais como o em tela. 11 Protótipos Protótipos são ferramentas para a criação ou simulação de programas. Estas ferramentas freqüentemente permitem a “colagem” de programas existentes, mesmo que em diversas linguagens de programação. Protótipos de programas são necessários para: Verificar a viabilidade de uma proposta ou de um Sistema pois conhecimentos recentemente adquiridos são de difícil validação sem testes Comunicação com os usuários Comunicação com a equipe de desenvolvimento de Sistemas Comunicação empresarial Mostrar desenvoltura, iniciativa e competência 12 Necessidade Programação e Prototipação O desenvolvimento de Sistemas, para a maioria dos profissionais é atividade para curto prazo em sua vida profissional (5 a 15 anos) A necessidade de programação é atividade para toda a vida profissional A necessidade programação quase sempre recai na necessidade de geração de protótipos Em geral profissionais constroem de 3 a 20 Sistemas em sua vida profissional mas tem de fazer (ou mandar fazer) um protótipo a cada 20 dias, ou seja, a cada ano da vida profissional se faz (ou se deveria fazer) mais protótipos do que os Sistemas feitos em toda a vida profissional 13 Desenvolvimento de Sistemas de Informações Os protótipos servem para validar a captura das especificações de requisitos e a interação com o usuário Especialistas projetam: Arquitetura do Sistema Modelagem Bancos de Dados Comunicação de Dados Interface O Sistema segue o ciclo de vida normal 14 Desenvolvimento de Sistemas de Cálculo Especialistas fornecem um algoritmo para a solução do problema Os protótipos servem para verificar a possibilidade de se conseguir chegar a um resultado desejado Especialistas projetam: Arquitetura do Sistema Modelagem Bancos de Dados Comunicação de Dados Interface O Sistema segue o ciclo de vida normal 15 Desenvolvimento de Sistemas de Apoio à Decisão Os protótipos já são o resultado desejado 16 Proposta do Curso Você pode não perder a capacidade de programar Você pode programar bem sem ser um exímio programador Conseguindo programar protótipos e utilizar linguagens de “scripting” sua carreira pode ter um diferencial de qualidade 17 Como fazer Linguagens Visuais ampliam extraordinariamente o poder de comunicação dos protótipos Linguagens Orientadas a Eventos simplificam tremendamente a programação de protótipos Linguagens Visuais Orientadas a Eventos serão a nossa ferramenta predileta 18 Pontos importantes O mais importante é o seu conhecimento básico de computadores, Sistemas e algoritmos A linguagem de programação é bem menos importante Você pode enfrentar qualquer linguagem de programação porque Existe um grande número de exemplos de código disponíveis na Internet A Programação Orientada a Eventos dispõe de Completamento de código Ajuda “on-line” Depurador “on-line” 19 O que será estudado Revisão das Linguagens de Programação como um todo A Linguagem Visual Basic por ser estranha aos Cursos acadêmicos, além de ser a Linguagem de automação da Microsoft e, como tal, ser muito difundida O uso dos produtos VB, Delphi e C++ Builder 20 O que não será estudado A linguagem Object Pascal A linguagem C++ 21 Garantia de sucesso Para comprovar a validade da proposta do Curso serão desenvolvidas aplicações consideradas extremamente difíceis: Redes Neurais e outras aplicações de Inteligência Artificial Computação Gráfica Gerativa 22 Em resumo A programação de Sistemas é tarefa complexa e nada muda daquilo que tem sido ensinado no Curso de Ciência da Computação Ocorre que, mesmo em “software houses”, a maior parte do tempo se está programando protótipos e isto é que se pretende estudar neste Curso. 23 Como será o desenvolvimento do Curso Serão apresentados ambientes de programação Será apresentado um enorme número de exemplos de aplicações funcionando em todas as Linguagens e ambientes de Programação Serão cobrados seis exemplos de pequeno grau de complexidade Serão cobrados dois exemplos de moderado grau de complexidade Não haverá provas (apenas VS para reprovar os que não fizerem os trabalhos) 24 Trabalhos Os trabalhos serão individuais Se algum grupo de alunos desejar se unir para enfrentar um trabalho de elevado grau de complexidade pode-se estudar esta opção 25 Duas vias O Curso deve preparar alunos para trabalhar com Programação Visual e geração de protótipos e terão seu desenvolvimento aqui descrito, pela chamada via normal. Alunos que já dominarem as linguagens e ambientes que serão ministradas poderão ser aprovados por via rápida. Isto significa que poderão entregas trabalhos especiais a qualquer tempo. Após a entrega dos trabalhos estarão aprovados e dispensados de presença. 26 Trabalhos da via normal Linguagem VB Delphi BCB VBA VBA VBA Qualquer Qualquer Descrição Uma aplicação qualquer A mesma aplicação de VB A mesma aplicação de VB Macro Excel Macro Word Macro PowerPoint Aplicação em OpenGL com uso de animação, textura e tutorial passo a passo Uma aplicação em Inteligência Artificial (preferencialmente com Redes Neurais) Valor 1,0 1,0 1,0 0,4 0,3 0,3 3,0 3,0 Datas de apresentação 15/06/04, 17/06/04 e 22/06/04 01/07/04 06/07/04, 08/07/04 e 13/07/04 29/07/04, 03/08/04 e 05/08/04 27 Escolha de trabalhos Os trabalhos deverão ser escolhidos com o Professor para evitar superposição. Cópia de trabalhos é permitido mas todos copiarem o mesmo trabalho não o é. A sugestão de macros está exibida a seguir. Cada sugestão de Word pode ser aceita até por três alunos. Cada sugestão PowerPoint pode ser aceita até por cinco alunos. 28 Sugestão de macros a apresentar Macros do Word 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Exemplos do livro Writing Word Macros de Steven Roman Appendix B Appendic C Chapter12 Chapter13 Chapter15 Chapter16 Chapter18 Chapter19 Chapter21 Do site http://www.cnr.berkeley.edu/~alyons/macros.html Email utilities LUIS Citation Wizard Email Survey Processor Do site http://www.author-it.com/docs/html/kb/html/3697.htm AddCellFormatting Do site http://www.chem.uky.edu/research/grossman/macro.html Macros for Writing Papers, Proposals, or Books Chemistry Macros General Macros Miscellaneous Keyboard Strokes Macros a serem criadas Criação de papel timbrado Modificação dos tipos de cabeçalho (Título 1, Título 2, etc.) Macros PowerPoint Do site http://raw.cs.berkeley.edu/texpoint/ 20 TextPoint Do site www.unf.edu/~tcavanau/publications/necc/macros.pdf 21 Várias macros interativas Do site http://www.funduc.com/pwrpt_sr.htm 22 Search and Replace Do site http://oceansystems.com/dtective/upgrade.htm 23 Duas macros de imagens Macros Excel Livre escolha dos alunos 29 Sugestão de aplicações de Inteligência Artificial a apresentar Aplicações de Inteligência Artificial Identificador Aplicação Rede Neural PNN 51 Rede Neural ART 52 Rede Neural SOM 53 Rede Neural STN 54 Lógica Fuzzy 55 Agentes 56 Editor de Redes Semânticas 57 Outras 58 Número máximo de alunos 4 4 4 4 4 4 4 4 30 Trabalhos da via rápida Alunos que já dominarem as linguagens que serão ministradas poderão ser aprovados por via rápida. Isto significa que poderão entregas trabalhos especiais a qualquer tempo. Após a entrega dos trabalhos estarão aprovados e dispensados de presença. Os trabalhos de via rápida serão agrupados em dois pacotes. Pacote 1 Pacote 2 31 Pacote 1 da via rápida Teste e descrição do conteúdo de todos os trabalhos apresentados pelos alunos do período passado. Execução de todos os programas e preenchimento do Banco de Dados de programas executados. O resultado do trabalho será apresentado em um programa, escrito em qualquer linguagem, permitindo a recuperação de informações por linguagem, aluno, período e tipo de aplicação. São previstas as seguintes entidades e atributos: Programa com Linguagem, título, tipo, descrição, recursos usados, como usar, comentários do professor e grau; Aluno com nome, período e grau. O atributo tipo pode assumir os valores VB, BCB, Delphi, Macro Excel, Macro Word, Macro PowerPoint, Agentes, Redes Neurais, Fuzzy, Busca, OpenGL, Outros. O valor do trabalho, como um todo, é 10,0 não se aceitando parte do trabalho. Este pacote poderá ser escolhido, no máximo, por três alunos sendo que cada qual deverá apresentar um trabalho independente (e distinto) dos demais. 32 Pacote 2 da via rápida Uma mesma aplicação em OpenGL com uso de animação, textura e tutorial passo a passo feito diversas linguagens (VB, Visual C++, Delphi, C++ Builder) mais três Macros (uma em Excel, uma em Word, uma em PowerPoint). O valor do trabalho, como um todo, é 10,0 não se aceitando parte do trabalho. Este pacote poderá ser escolhido, no máximo, por cinco alunos sendo que cada qual deverá apresentar um trabalho independente (e distinto) dos demais. 33 Calendário Dia 06/04/04 terça feira 08/04/04 quinta feira 13/04/04 terça feira 15/04/04 quinta feira 20/04/04 terça feira 22/04/04 quinta feira 27/04/04 terça feira 29/04/04 quinta feira 04/05/04 terça feira 06/05/04 quinta feira 11/05/04 terça feira 13/05/04 quinta feira 18/05/04 terça feira 20/05/04 quinta feira 25/05/04 terça feira 27/05/04 quinta feira 01/06/04 terça feira 03/06/04 quinta feira 08/06/04 terça feira Aula Assunto 1 Apresentação da disciplina Semana santa 2 Aplicações gráficas – OpenGL 3 Aplicações gráficas – OpenGL 4 Aplicações gráficas – OpenGL 5 Redes Neurais 6 Redes Neurais 7 Redes Neurais 8 Outras aplicações de IA 9 Histórico das linguagens de programação 10 Programação Visual Orientada a Eventos 11 Visual Basic – Linguagem 12 Visual Basic - Linguagem 13 Visual Basic - Linguagem 14 Prática com VB 15 Prática com VB 16 Delphi e Object Pascal 17 C++ Builder 18 Prática com Delphi e C++ Builder 34 Calendário (cont.) Dia Aula Assunto Corpus Christi 10/06/04 quinta feira 15/06/04 terça feira 19 Trabalhos de VB, Delphi e BCB 17/06/04 quinta feira 20 Trabalhos de VB, Delphi e BCB 22/06/04 terça feira 21 Trabalhos de VB, Delphi e BCB 24/06/04 quinta feira 22 VBA com Excel 29/06/04 terça feira 23 VBA com Word e PowerPoint 01/07/04 quinta feira 24 Trabalhos de VBA 06/07/04 terça feira 25 Trabalho de OpenGL 08/07/04 quinta feira 26 Trabalho de OpenGL 13/07/04 terça feira 27 Trabalho de OpenGL 15/07/04 quinta feira 28 Prática em Laboratório 20/07/04 terça feira 29 Prática em Laboratório 22/07/04 quinta feira 30 Prática em Laboratório 27/07/04 terça feira 31 Prática em Laboratório 29/07/04 quinta feira 32 Trabalho de Redes Neurais ou IA 03/08/04 terça feira 33 Trabalho de Redes Neurais ou IA 05/08/04 quinta feira 34 Trabalho de Redes Neurais ou IA 35 Conclusão Pretende-se que esta disciplina seja uma diversão criativa para quem gosta de programar computadores Bem-vindos ao Curso Grato pela confiança 36 Formalização da Ementa TCC04143 - Tópicos Especiais em Linguagens de Programação III Período 2003.2 - 3as. e 5as. feiras - das 07 às 09 horas Optativa: Programação Visual Orientada a Eventos com aplicações gráficas e em Inteligência Artificial (4 créditos) Professor: Inhaúma Neves Ferraz Objetivo: Dar uma visão geral sobre a Programação Visual Orientada a Eventos e explorar a geração de protótipos. Descrição: Apresentar um panorama das Linguagens de Programação. Apresentar a linguagem Basic e sua variantes. Caracterizar a Programação Visual Orientada a Eventos. Gerar protótipos com Programação Visual com pouco conhecimento da Linguagem de Tratamento de Eventos. Desenvolver aplicações de inteligência artificial e aplicações gráficas em diferentes linguagens de programação. 37 Formalização da Ementa (cont.) Ementa: Histórico das linguagens de programação Programação Visual Orientada a Eventos Visual Basic – Linguagem Prática com VB C++ Builder Prática com C++ Builder Delphi e Object Pascal Prática com Delphi Aplicações gráficas – OpenGL VBA VBA com Excel VBA com Word e PowerPoint Aplicações de Inteligência Artificial : Redes Neurais, Lógica Fuzzy, Agentes Prática em Laboratório 38 Bibliografia: Petroutsos, Evangelos - Dominando o Visual Basic 6 - Makron Books do Brasil. - São Paulo - 1999. Nunes, Eduardo - Visual Basic 6.0 - Guia do Usuário - Makron Books do Brasil - São Paulo - Brasil - 1999. Microsoft Corporation – Visual Basic 6.0 – Guia do Programador - Makron Books do Brasil - São Paulo - Brasil 1999. Lomax, Paul - Learning VBScript - O’Reilly & Associates Inc. - Sebastopol - USA - 1997. História das linguagens de programação com interessante gráfico de evolução http://www.levenez.com/lang/ Introdução à Computação Gráfica da UFRJ http://orion.lcg.ufrj.br/cg/ Tutorial de OpenGL da PUCRS http://www.inf.pucrs.br/~manssour/OpenGL/ OpenGL usando C++ Builder http://www.ap.dyndns.dk/opengl.htm Histórico das linguagens de programação (parte 1) http://www.uow.edu.au/~hasan/buss930/prog/prlangs1.htm Histórico das linguagens de programação (parte 2) http://www.uow.edu.au/~hasan/buss930/prog/prlangs2.htm Lógica Fuzzy http://www.attar.com/pages/fuzzy.htm Animações em Powerpoint http://duramecho.com/ComputerInformation/HowToDoPowerpointAnimations.html Excel com VBA http://www.excel-vba.com/ae-contents.htm Notas de aula de VBA para Excel www.ncc.up.pt/~ricroc/aulas/0203/sap/pdf/vba_excel.pdf Notas de aula de Delphi http://geekbrasil.sites.uol.com.br/delphi.zip Tutoriais de C++ Builder http://www.kissysoftware.com/asp/functions.asp http://www.araripina.com.br/bcb/ 39