desenvolvimento de jogos e entretenimento digital oficina temática: algoritmos e programação...
TRANSCRIPT
Desenvolvimento de Jogos e Entretenimento
Digital
Oficina temática:
Algoritmos e Programação
Aula1: Revisão de conceitos básicos
Professor: Sandro Rigo
Roteiro
Apresentação Conceitos básicos (revisão)
Arquitetura de Von Neuman Discussão: Algoritmo Linguagem de programação
variáveis, expressões Exercícios
Apresentação
Objetivo: Apresentação e revisão de conceitos básicos Discussão da noção de algoritmo Escopo da linguagem de programação Exercício com mapa conceitual Exercícios com variáveis e expressões
Conceitos básicos
Arquitetura de Von Neumann:
Entrada Teclado, mouse, joystick, ....
Processamento UCP/CPU (Unidade Central de Processamento) (Placas específicas de entrada e saída)
Memória Secundária (discos), Principal (RAM)
Saída Vídeo, impressora, ...
Conceitos básicos
Arquitetura de Von Neumann: ou arquitetura de fluxo de controle
A Memória armazena sempre um conjunto de instruções no formato conhecido como “linguagem de máquina”
A CPU realiza ininterruptamente seu ciclo de operação Busca de instruções na memória Decodificação de instruções Execução de instruções
Uso de “registradores internos” para manter o estado Local de memória a ler Valores temporários gerados
Conceitos básicos
Outras arquiteturas : arquitetura de fluxo de dados
A Memória armazena um conjunto de instruções no formato conhecido como “tokens”
Operação, operandos, destino Não existe controle da memória a ser lida A execução das instruções (tokens) ocorre
quando os operandos estiverem disponíveis
Conceitos básicos
Outros recursos: placas de entrada e saída
Componentes específicos para a solução de problemas em determinadas áreas
Computação gráfica: “renderização” Implementação mais eficiente Liberação do processador para outras tarefas
Conceitos básicos
Outros recursos:
Multiprocessamento Eletrônica embarcada Componentes de entrada de dados
Conceitos básicos
HD
CPU
Memória
.........
.........
.........
.........
Interface de entrada e saídaInterface de entrada e saída
Conceitos básicos
Algoritmo
Usado para a solução de problemas Descrito em diversos formalismos Seqüência de processos encadeados Formas de mapeamento dos dados envolvidos Cooperação, comparação, melhorias Independente de linguagem Dependente de recursos
Algoritmo
Algoritmo Exemplo: leitura do livro “X”
Ir até a biblioteca Acessar a lista de localização de títulos Procurar o título “X” Anotar o número da estante Caminhar até a estante Retirar o livro da estante Caminhar até o espaço de leitura Ler o livro
Algoritmo
Algoritmo Exemplo: receita de pão
Obter os ingredientes Misturar os ingredientes e fazer a massa Aguardar o crescimento da massa Colocar no forno por 35 minutos Retirar do forno
Algoritmo
Algoritmo Exemplo: receita de pão
Obter farinha (2 xícaras) Obter ovos (2 ovos) Obter leite (1 xícara) Obter fermento (1 colher de sopa) Misturar os ingredientes e fazer a massa Aguardar o crescimento da massa Colocar no forno por 35 minutos Retirar do forno
Algoritmo Algoritmo Diversidade: ordenação
Ordenação por inserção direta Ordenação por seleção direta Ordenação por inserção através de incrementos decrescentes Ordenação por árvores Ordenação por particionamento Ordenação polifásica Bubble sort Shellsort Quicksort Mergesort Radix sort Algoritmos de ordenação paralela .............
Algoritmo
Algoritmo Diversidade: ordenação, busca, .... Performance: comparação entre resultados
obtidos Requisitos: mais memória, mais
processamento Etapas, ou pré-processamento (dividir para
conquistar)
Linguagem de programação
Linguagem de programação Implementação de algoritmos Tradução em código executável
(fonte => objeto => executável) Processo de tradução: dependente de máquina
JavaPadrões (C ANSI)
Compartilhamento de “módulos” ou procedimentos
Adequação: velocidade, sintaxe, requisitos
Linguagem de programação
Linguagem de programação Comandos
Palavras-chave de uma linguagem associadas a implementações específicas
VariáveisRecursos de armazenamento de valores que podem
ser modificados durante a execução de programas Constantes
Recursos para armazenamento de valores estáticos durante a execução de programas
Linguagem de programação
Linguagem de programação Programas
Seqüência de comandos de uma linguagem, em formato padronizado, que permite a implementação de algoritmos
Fonte: descrição original, em formato texto, pelo programador
Executável: descrição na linguagem de máquina do processador em que deve ser executado
Objeto: formato intermediário, usadopara composição de código com diversos módulos
Linguagem de programação
Linguagem de programação Programas
Exemplo: #include <stdio.h>/* impressão de uma mensagem simples */main(){
printf(“\n Mensagem inicial em c! \n”);return 0;
}
Linguagem de programação
Linguagem de programação Tipos de dados
NuméricosLógicosTexto
ExpressõesConjunto de operadores e valores ou variáveis,
utilizado para a implementação de cálculos
Linguagem de programação
Linguagem de programação
ExpressõesExemplo: média
Variável 1 -> valor da primeira prova (v1) Variável 2 -> valor da segunda prova (v2) Variável média -> média aritmética das duas (v1 e v2) Operadores: atribuição soma e divisão
media = (v1 + v2) / 2;
Linguagem de programação
Linguagem de programação
ExpressõesOperadores
Aritméticos Lógicos Atribuição
Introdução
Algoritmo => linguagem de programação
Exibir o resultado
C printf(“\nResultado: %d\n”,valor);
Mapeamento paraa linguagem de programação
C++ Cout<< endl<<“Resultado: “ <<valor<<endl;
PHP echo(“\nResultado: “.$valor.”\n”);
PASCAL write(“Resultado: “);Writeln(valor);
ASSEMBLYvalor dw 00mens db 13,10,“Resultado:”res db 0000 db “$”.......;conversão de valor/ASCII........mov ah,9mov dx, offset mensInt 21h
Pythonprint “\nResultado:”print valor
{
Introdução
Implementação de programas
disco Editor de texto
Gera arquivo fonte(.cpp)
Compilador
Lê arquivo fonte (.cpp)Gera arquivo objeto
Editor de ligação (linker)
Lê arquivo objeto, Lê arquivos de bibliotecasGera arquivo executável
No Visual C++:
-File New-File Save-Build compile-Build build .exe
Introdução
Implementação de programasNo Visual C++:
-File New-File Save-Build compile-Build build .exe
Introdução
No Visual C++:
-File New-File Save-Build compile-Build build .exe
// teste in C++#include <iostream>
int main(){ std::cout << "Bem vindo C++!\n";
return 0; }
LZ ø+A2L k .drectve b $ .debug$S „ † H B.CRT$XCU – ¢ @ 0À.text = À ý % P`.rdata = @[email protected]$S N N œ HB.text Ö ° †# ¨$ P`.text$x D% W% P`.xdata$x ` u% Õ% @@@.debug$S & '( HB.text N Ÿ( í( ) P`.debug$S ± ) È) HB.text * Ü) * P`.debug$S Ž * š* HB.text 5 ®* ã* ÷* P`.debug$S w H B-defaultlib:libcpd -defaultlib:LIBCD -defaultlib:OLDNAMES -editandcontinue -include:___pfnBkCheck J ptrdiff_t __exString exception u size_t y _s__CatchableType ! wchar_t 6 _TypeDescriptor J FILE f _PMFN p va_list@ + D + X \ k o ƒ P ‡ P œ ¯ § ³ § á å F š U‹ìƒì@SVW}À¹ ¸ÌÌÌÌó«h h è ƒÄ3À_^[ƒÄ@;ìè ‹å]à # 1 5 ! * , � Bem vindo
Exercícios
Exercícios Mapa conceitual Variáveis Expressões Algoritmos
Material e recursos Bibliografia
Terada, Routo. Desenvolvimento de Algoritmos e Estruturas de Dados. São Paulo: McGraw-Hill, 1991.
Lee, Richard C.. Tepfenhart, William M.. Paschoa, Celso Roberto (trad.). UML e C++: Guia Prático de Desenvolvimento Orientado a Objeto. São Paulo: Makron, 2001.
Wirth, Niklaus. Lee, Cheng Mei (trad.). Algoritmos e Estruturas de Dados. Rio de Janeiro: LTC, 1989-1999.
Szwarcfiter, Jayme Luiz. Markenzon, Lilian. Estruturas de Dados e seus Algoritmos. 2. ed. Rio de Janeiro: Livros Técnicos e Científicos, 1994.
Preiss, Bruno R.. Gouvêa, Elizabeth Ferreira (trad.). Estruturas de Dados e Algoritmos: Padrões de Projetos Orientados a Objetos com Java. Rio de Janeiro: Campus, 2000.