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 Linguagem de Scripting! Projectada para comunicar instruções a um computador;! Corre independente de outros programas exteriores;! É compilada;! 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 Editor de texto - Notepad++ - Gedit - TextWrangler *.py Com erros! Terminal / Shell - terminal - cmd Sem 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 A > B Sim Bloco 1 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