Linguagens e paradigmas de programação

Propaganda
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
Download