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

aula 1 - Unisinos