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)
Discussão: Algoritmo
Linguagem de programação
Arquitetura de Von Neuman
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
Memória
CPU
.........
.........
.........
.........
Interface de entrada e saída
HD
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
Java
Padrões (C ANSI)
Compartilhamento de “módulos” ou
procedimentos
Adequação: velocidade, sintaxe, requisitos
Linguagem de programação
Linguagem de programação
Comandos
Variáveis
Palavras-chave de uma linguagem associadas a
implementações específicas
Recursos 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éricos
Lógicos
Texto
Expressões
Conjunto de operadores e valores ou variáveis,
utilizado para a implementação de cálculos
Linguagem de programação
Linguagem de programação
Expressões
Exemplo: 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ões
Operadores
Aritméticos
Lógicos
Atribuição
Introdução
Algoritmo => linguagem de programação
Exibir o resultado
C++
Cout<< endl<<“Resultado: “ <<valor<<endl;
C
printf(“\nResultado: %d\n”,valor);
Mapeamento
para
a linguagem
de
programação
PHP
echo(“\nResultado: “.$valor.”\n”);
PASCAL
write(“Resultado: “);
Writeln(valor);
Python
print “\nResultado:”
print valor
ASSEMBLY
valor dw 00
mens db 13,10,“Resultado:”
res db 0000
db “$”
.......
;conversão de valor/ASCII
........
mov ah,9
mov dx, offset mens
Int 21h
Introdução
Implementação de programas
disco
Gera arquivo fonte
(.cpp)
Editor de texto
Lê arquivo fonte (.cpp)
Gera arquivo objeto
Compilador
Lê arquivo objeto,
Lê arquivos de bibliotecas
Gera arquivo executável
Editor de ligação
(linker)
No Visual C++:
-File New
-File Save
-Build compile
-Build build .exe
Introdução
Implementação de programas
No Visual C++:
-File New
-File Save
-Build compile
-Build build .exe
L Z ø+A2L k .drectve
b $
.debug$S
„ † H B.CRT$XCU
– ¢ @ 0À.text
= À ý % P`.rdata
=
@[email protected]$S
N N œ
H B.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
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;
}
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.