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 Inteligência Artificial Computação Gráfica Gerativa aplicações de 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 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 entregar 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 é Os trabalhos em macros poderão ser por escolha do aluno ou por sugestão do professor 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 BPN 51 Rede Neural ART 52 Rede Neural SOM 53 Rede Neural de Base Radial 54 Lógica Fuzzy 55 Agentes 56 “Bagging” 57 Outras 58 Número máximo de alunos 4 4 4 6 4 6 6 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 entregar 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 na última apresentação desta Disciplina (segundo período de 2005) 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. 32 Pacote 1 da via rápida 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. 33 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) e 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. 34 Calendário Datas Dia Ordem Assunto 31/08/2006 5 1 Apresentação da disciplina 05/09/2006 3 2 Histórico das linguagens de programação 07/09/2006 5 Independência 12/09/2006 3 3 Programação Visual Orientada a Eventos 14/09/2006 5 4 Visual Basic – Linguagem 19/09/2006 3 5 Visual Basic - Linguagem 21/09/2006 5 6 Prática com VB 26/09/2006 3 7 Prática com VB 28/09/2006 5 8 Delphi e Object Pascal 03/10/2006 3 9 C++ Builder 05/10/2006 5 10 Prática com Delphi e C++ Builder 10/10/2006 3 11 Trabalhos de VB, Delphi e BCB 12/10/2006 5 N. Sra. Aparecida 17/10/2006 3 12 Trabalhos de VB, Delphi e BCB 19/10/2006 5 13 Trabalhos de VB, Delphi e BCB 24/10/2006 3 14 VBA com Excel 26/10/2006 5 15 VBA com Word e PowerPoint 31/10/2006 3 16 Trabalhos de VBA 02/11/2006 5 Finados 35 Calendário (cont.) Datas Dia Ordem Assunto 07/11/2006 3 17 Aplicações gráficas – OpenGL 09/11/2006 5 18 Aplicações gráficas – OpenGL 14/11/2006 3 19 Aplicações gráficas – OpenGL 16/11/2006 5 20 Prática em Laboratório 21/11/2006 3 Araribóia 23/11/2006 5 21 Prática em Laboratório 28/11/2006 3 22 Prática em Laboratório 30/11/2006 5 23 Trabalho de OpenGL 05/12/2006 3 24 Trabalho de OpenGL 07/12/2006 5 25 Redes Neurais 12/12/2006 3 26 Redes Neurais 14/12/2006 5 27 Outras aplicações de IA 19/12/2006 3 28 Prática em Laboratório 21/12/2006 5 29 Prática em Laboratório 26/12/2006 3 Recesso de Natal 28/12/2006 5 Recesso de Natal 02/01/2007 3 30 Trabalho de Redes Neurais ou IA 04/01/2007 5 31 Trabalho de Redes Neurais ou IA 36 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 37 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. 38 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 39 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/ 40