PROGRAMAÇÃO EM JOGOS DIGITAIS Frutuoso Silva Paradigmas de Programação Linguagem de programação Paradigmas de programação 1 Linguagem de programação ! ! Para ser útil e confiável, uma linguagem deve ter uma sintaxe e semântica bem definida. Sintaxe ! Estrutura ! e pontuação (ex: palavras reservadas) Semântica ! O significado das palavras e como podemos combiná-las de modo a terem sentido Linguagens de programação ! ! ! No nível mais baixo os computadores trocam informação em formato binário (0,1) Porque é que os computadores digitais trabalham com informação binária? A combinação de 0 e 1 pode ter diferentes significados dependendo do esquema de codificação (i.e., da linguagem) 2 Linguagens de programação ! ! Escrever os programas em formato binário é uma tarefa complicada! Por isso temos: ! Compiladores ! Interpretadores Que são programas que pegam em código escrito noutras linguagens e convertem para o formato binário. Programming Language vs Scripting Language ! ! Qual a diferença entre uma linguagem de programação e uma linguagem de scripting? Linguagens de Programação ! C, ! C++, C#, Java, … Linguagens de Scripting ! PHP, Javascript, Python, … 3 Programming Language vs Scripting Language Linguagem de Programação Projectada para comunicar instruções a um computador; ! Corre independente de outros programas exteriores; ! É compilada; ! … ! Linguagem de Scripting Projectada para comunicar com outras aplicações; ! Requer outro programa para correr (run inside); ! Não é compilada; ! É interpretada; ! … ! Ver http://www.ostesting.com/programming-language-vs-scripting-language/ Linguagens de Programação ! Qual é a melhor linguagem de programação? ! Depende ! da finalidade ! Vejamos a popularidade das diversas linguagens de programação http://pypl.github.io/PYPL.html http://www.tiobe.com/tiobe-index/ 4 Linguagens de Programação Java ! Python ! PHP ! Linguagens de Programação Java ! C ! C++ ! Python ! JavaScript ! PHP ! 5 Paradigmas de Programação ! O que é um paradigma de programação? Paradigmas de Programação ! O que é um paradigma de programação? ! É uma abordagem estruturada para resolver um problema. 6 Paradigmas de Programação ! ! ! ! ! Programação imperativa ! A lista de acções a executar; Programação procedimental ! Chamada a procedimentos (ou funções); Programação orientada a objectos ! A interacção é baseada em objectos; Programação orientada a eventos ! O fluxo é baseado em eventos; Programação declarativa ! Baseado em programação funcional, lógica; ! Descreve-se o que faz o programa não como se faz! Paradigmas de Programação ! ! ! ! ! Programação imperativa (ex: PASCAL, FORTRAN, C, ...) ! A lista de acções a executar; Programação procedimental (ex: PASCAL, FORTRAN, C, ...) ! Chamada a procedimentos (ou funções); Programação orientada a objectos (ex: C++, Java, Python,...) ! A interacção é baseada em objectos; Programação orientada a eventos ! O fluxo é baseado em eventos; Programação declarativa (ex: Lisp, SML, Prolog, Ocaml, #F, ...) ! Baseado em programação funcional, lógica; ! Descreve-se o que faz o programa não como se faz! 7 Paradigmas de Programação ! Programação Imperativa temos a possibilidade de ter: ! Sequência – ordem pela qual é processada a informação; ! Selecção – possibilidade de efectuar uma escolha; ! Repetição – possibilidade de repetir uma acção; Paradigmas de Programação ! Qual é o paradigma usado nos Videojogos? 8 Paradigmas de Programação ! Qual é o paradigma usado nos Jogos? ! Programação orientada/baseada em eventos Linguagem de Programação Python --- www.python.org 9 Python why? ! Python is powerful... and fast; ! Plays well with others; ! Runs everywhere; ! Is friendly & easy to learn; ! Is Open. Python why? Dynamic, Interpreted, Interactive ! Object Oriented ! Easy to write, easy to read ! Popular - education, prototyping, quick hacks, research, unlimited ! From web to standalones ! On many platforms (Unix, Linux, Windows, OS X, etc.) - Free ! Lacks type declaration ! Huge library of modules ! 10 Python Surgiu em 1989, e foi criada por Guido van Rossum ! Programa da BBC “Monty Python and the Flying Circus” ! Linguagem de altíssimo nível ! Tipagem dinâmica ! Multiparadigma (OO, funcional e procedimental) ! Interpretada ! ! Vejam o que dizem do Python em: https://www.python.org/about/quotes/ Python ! ! ! Duas versões: 3.5.2 e a 2.7.12 Para as aulas vamos usar a 2.7.*, pois muitas bibliotecas ainda não suportam a versão 3. Documentação sobre o Python ver online www.python.org Apontamentos fornecidos pelo docente www.di.ubi.pt/~fsilva/pjd/ 11 Desenvolvimento de programas Edição --- > Interpretar (Compilar) --- > Execução Sem erros ! Editor de texto - Notepad++ - Gedit - TextWrangler *.py Terminal / Shell - terminal - cmd Com erros ! Executa Características do Python ! Um comando por linha ! Usar ; para mais de um comando por linha ! Usar \ para continuar uma string noutra linha ! Bloco de instruções é definido por indentação ! Não ! misturar Tabs e espaços Comentários ! Caracter # ou """strings multi-linhas””” 12 Identificadores ! Diferença entre maiúsculas e minúsculas ! Nome deve iniciar com letra ou "_" ! Restante ! do nome pode conter letras, números e "_" Não é permitido o uso de palavras reservadas Mas quando necessário costuma-se usar um "_" no fim do nome (ex. "from_") Primeiro programa em Python ! ! Instalar o Python Escrever o código do programa num editor de texto, e gravar com a extensão *.py print “Hello World!” ! Fazer os exercícios da folha - Lab1.pdf 13 Instrução condicional – if if/else if/elif/else ! Uma instrução condicional executa um bloco de instruções dependendo do valor lógico de uma expressão; # -*- coding: utf-8 -*a=6 b = 11 if a > b: print "A é o maior” else: print "A não é o maior" BLOCO DE INSTRUÇÕES CRIA-SE POR IDENTAÇÃO Ex: Tab ou espaços; Instrução condicional if/else Uma instrução Um bloco de instruções # -*- coding: utf-8 -*a=6 b = 11 if a > b: print "A é o maior” else: print "A não é o maior" # -*- coding: utf-8 -*a=6 b = 11 if a > b: print "A é o maior” print ”B é o menor” else: print "A não é o maior" print ”B é o maior" 14 Instrução condicionalif/elif/else ! IF / ELIF / ELSE # -*- coding: utf-8 -*a=6 b = 11 if a > b: print "A é maior que B" elif b > a: print "B é maior que A" else: print "A e B são iguais" Instrução condicionalif/elif/else ! IF / ELIF / ELSE # -*- coding: utf-8 -*a=6 b = 11 if a > b: print "A é maior que B" elif b > a: print "B é maior que A" else: print "A e B são iguais" Se a > b for verdadeiro 15 Instrução condicionalif/elif/else ! IF / ELIF / ELSE # -*- coding: utf-8 -*a=6 b = 11 if a > b: print "A é maior que B" elif b > a: print "B é maior que A" else: print "A e B são iguais" Se b > a for verdadeiro Instrução condicional if/elif/else ! IF / ELIF / ELSE # -*- coding: utf-8 -*a=6 b = 11 if a > b: print "A é maior que B" elif b > a: print "B é maior que A" else: print "A e B são iguais" Caso contrário, ou seja, se as anteriores forem todas falsas 16 Instrução condicional ! IF usado entre parêntises print ("A é maior" if a > b else "A não é maior") #Uma via apenas - if if a > b: print ("A é maior”) Instrução condicional ! Permite alterar o fluxo do programa de acordo com o valor lógico de uma expressão Não Bloco 1 A>B Sim Bloco 2 17 Leitura de dados ! Para o utilizador introduzir um valor utiliza-se a função: ! input() ! raw_input() print "How old are you?", age = raw_input() #ou age = input() Leitura de dados ! A função raw_input() print "How old are you?", age = raw_input() print "How tall are you?", height = raw_input() print "How much do you weigh?", weight = raw_input() print "So, you're %r old, %r tall and %r heavy." % ( age, height, weight) 18 Leitura de dados ! A função raw_input vs. input() # Not run well with raw_input() !!! Try it with input() day = raw_input("Introduce the day of the month: ") if day < 10: print "We are in the beginning of the month!" elif day > 20: print "We are in the ending of the month!" else: print "We are in the middle of the month!" Instrução condicional + Leitura de dados ! Concluir os exercícios da folha – Lab2.pdf e ! Fazer exercícos da folha – Lab3.pdf 19