Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula...

47
Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo

Transcript of Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula...

Page 1: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Desenvolvimento de Jogos e Entretenimento

Digital

Oficina temática: Algoritmos e Programação

Aula 2: Introdução ao C++

Professor: Sandro Rigo

Page 2: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Roteiro

Introdução Estrutura de programas em C++

Variáveis e tipos de dados Comandos Estruturas de controle e seleção

Uso de vetores Exercícios

Page 3: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Algoritmo Sintaxe (livre) para a descrição de soluções

Page 4: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Algoritmo Sintaxe (livre) para a descrição de soluções Definição de variáveis e estruturas de dados

Page 5: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Algoritmo Sintaxe (livre) para a descrição de soluções Definição de variáveis e estruturas de dados Organização em blocos de operações

Page 6: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Algoritmo Sintaxe (livre) para a descrição de soluções Definição de variáveis e estruturas de dados Organização em blocos de operações Mapeamento para linguagem de programação

Page 7: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Algoritmo Sintaxe (livre) para a descrição de soluções Definição de variáveis e estruturas de dados Organização em blocos de operações Mapeamento para linguagem de programação Validade: planejamento, teste, comunicação

Page 8: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Linguagem de programação Possui sintaxe própria e rígida

Conjunto de palavras reservadas Bibliotecas padrão de funções Ambiente de desenvolvimento

Page 9: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Linguagem de programação Possui sintaxe própria e rígida

Conjunto de palavras reservadas Bibliotecas padrão de funções Ambiente de desenvolvimento

Permite declaração de variáveis

Page 10: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Linguagem de programação Possui sintaxe própria e rígida

Conjunto de palavras reservadas Bibliotecas padrão de funções Ambiente de desenvolvimento

Permite declaração de variáveis Permite definições de blocos de comandos

Page 11: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Linguagem de programação Possui sintaxe própria e rígida

Conjunto de palavras reservadas Bibliotecas padrão de funções Ambiente de desenvolvimento

Permite declaração de variáveis Permite definições de blocos de comandos Permite organização de funções e módulos

Page 12: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Linguagem de programação Possui sintaxe própria e rígida

Conjunto de palavras reservadas Bibliotecas padrão de funções Ambiente de desenvolvimento

Permite declaração de variáveis Permite definições de blocos de comandos Permite organização de funções e módulos Utilizada para a implementação de algoritmos

Page 13: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

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

{

Page 14: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Alguns conceitos compartilhados

Variáveis Tipos de dados (e estruturas de dados)

(inteiro, caractere, ponto flutuante, lógico, ....)

Comandos ( e blocos de comandos ) Rotinas (e módulos)

Page 15: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Introdução

Alguns conceitos compartilhados

Definir o número de valoresRepetir

Ler o valor da notaSomar valor lido a valor total

média = valor total / número de valoresExibir média

....cout << “Número de alunos: “;cin >> nro_alunos;...while (contador < nro_alunos){

cout << “Nota: “;cin >> valor;total=total + valor;contador ++;

}.....media = total / nro_alunos;...cout << “Média : ” << media;...

Page 16: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

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

Page 17: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

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

Page 18: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

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

// 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

Page 19: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Conceitos básicos Código fonte Bibliotecas de recursos Compilação e ligação

Estrutura geral Cabeçalho: comentários, bibliotecas e definições Bloco principal (em geral: int main() ) Blocos auxiliares (classes, rotinas ou funções)

Page 20: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Exemplo de estrutura geral

#include <stdio.h>

/* impressão de uma mensagem simples */

int main()

{

printf(“\n Mensagem inicial em c! \n”);

return 0;

}

Page 21: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Exemplo de estrutura geral

#include <stdio.h>

/* impressão de uma mensagem simples */

int main()

{

printf(“\n Mensagem inicial em c! \n”);

return 0;

}

Biblioteca utilizada

linha de comentário

Bloco principal

Page 22: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++ Outro exemplo de estrutura geral

/* Nome: imprime.cpp *//* Autor: Sandro Rigo *//* Data de criação: 18/09/2004 *//* Descrição: teste simples de impressão... */// bibliotecas básicas : entrada e saída#include <stdio.h>// protótipos de rotinas ou classes utilizadas// estruturas de dados e variáveis// definições utilizadasint main(){

// trecho do programa principal//.......return 0;

}//definições de rotinas auxiliares

Page 23: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Inclusão de bibliotecas Indicação de módulos a serem utilizados Uso da diretiva “#include”

(para o pré-processador) Formato geral:

#include <nome>

(busca arquivo ”nome” no diretório padrão)#include “nome”

(busca arquivo ”nome” no diretório atual)

Page 24: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Inclusão de bibliotecas Exemplos

//para suporte em operações de e/s de “streams”

#include <iostream>

// para inclusão de biblioteca particular

#include “minha_biblioteca.h”

Page 25: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Inclusão de bibliotecas Lista completa (Standard C++ Library Reference)

(a ser vista durante o curso)

<algorithm> · <bitset> · <complex> · <deque> · <exception> · <fstream> · <functional> · <iomanip> · <ios> · <iosfwd> · <iostream> · <istream> · <iterator> · <limits> · <list> · <locale> · <map> · <memory> · <numeric> · <ostream> · <queue> · <set> · <sstream> · <stack> · <stdexcept> · <streambuf> · <string> · <strstream> · <utility> · <valarray> · <vector>

<cassert> · <cctype> · <cerrno>· <cfloat> · <ciso646> · <climits> · <clocale> · <cmath> · <csetjmp> · <csignal> · <cstdarg> · <cstddef> · <cstdio> · <cstdlib> · <cstring> · <ctime> · <cwchar>

· <iso646.h> · <wchar.h>

Page 26: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Bloco de código Bloco principal

Indica um nome (main, _tmain)Indica um tipo de dado de retorno (int)Pode receber parâmetrosInício e fim delimitados por chaves ( “{“ e “}” )

Page 27: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Variáveis Posições de memória referenciadas no programa Declaradas com nome e tipo de dados Opcionalmente recebem valor inicial Exemplos:

int valor; // variável do tipo inteiro com nome “valor” Int total = 0; // variável “total”, inicializada com “0”

Formato geral: <tipo> <nome>; <tipo> <nome> = <valor inicial>; <tipo> <nome>, <nome2>, ... <nome_n>; <tipo> <nome> =<valorinicial>, <nome2> =<valorinicial2>;

Page 28: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Variáveis

//declaração:int a, b;char c;float d;int e;

Memória:Endereço| Conteúdo------------------------------100 | a 101 | a 102 | b103 | b104 | c105 | d106 | d107 | d108 | d109 | d110 | e111 | e112 |113 |114 |

Inteiro (int): 2 bytesCaractere (char): 1 bytePonto flutuante (float): 4 bytes

Page 29: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Variáveis

//declaração:int a, b;char c;float d;int e;

Memória:Endereço| Conteúdo------------------------------100 | 00 101 | 00102 | 00103 | 01104 | 33 (“!”)105 | d106 | d107 | d108 | d109 | d110 | 00111 | 02112 |113 |114 |

Inteiro (int): 2 bytesCaractere (char): 1 bytePonto flutuante (float): 4 bytes

Exemplo de uso:

a = 0;b = 1;c = “!”;e = 2;

}

}

}

}

CaractereCódigo ASCII

Page 30: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Variáveis Vetores: estrutura unidimensional Declaradas com nome e tipo de dados Opcionalmente recebem valor inicial Adicionalmente recebem número de elementos Exemplos:

int valor[10]; // vetor (tipo inteiro) com nome “valor” e 10 elementos Int total[3] = {0, 1, 2}; // vetor (tipo inteiro) com nome “total” e

inicializado com os valores “0”, “1”, “2” Formato geral:

<tipo> <nome> [ <tamanho> ]; <tipo> <nome> [ <tamanho> ] = { <valor>, <valor1>, ...<valorN>};

Page 31: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Variáveis

//declaração:int a[2], b;char c[4];

Memória:Endereço| Conteúdo------------------------------100 | 00 101 | 01102 | 00103 | 02104 | 00105 | 10106 | 79 (“O”)107 | 105 (“i”)108 | 33 (“!”)109 | 63 (“?”)Inteiro (int): 2 bytes

Caractere (char): 1 byte

Exemplo de uso:

a[0] = 1;a[1] = 2;b = 10;c[0] = ‘O’;c[1] = ‘i’;c[2] = ‘!’;c[3] = ‘?’;

cout<< c;cout<< c[3];cout <<endl;cout<< a;cout <<endl;cout<< a[0];

}

}

}

Oi!??0012FF781

Page 32: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Variáveis Tamanhos de alguns tipos de dadosTipo Tamanho Valores possíveisunsigned char1 byte 0 - 255char 1 byte -128 - 127unsigned int 2 bytes 0 – 65535int 2 bytes -35768 – 32767float 4 bytes 3.4E-38 – 3.4e+38double 8 bytes 1.7E-308 – 1.7E+308

Page 33: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

VariáveisTipo Tamanho Valores possíveis

unsigned char1 byte 0 - 255

Programador

Uso de memória

Forma de representação

Exemplo:Binário Decimal 00 0

01 1 10 2 11 3100 4 (3bits) ou 0 (2bits)

Page 34: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Sempre terminam com ponto e vírgula (“;”) Podem ser colocados na mesma linha Exemplos:

cout << “mensagem!”;count << “mensagem !”; cin >> valor;

Agrupados em blocos com chaves (“{“ e “}”)

Page 35: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Expressões: atribuição

Permite armazenar em uma variável um resultado de uma expressão

Formato geral:

<variável> = <expressão>;Exemplo:

a = 10; b = 5;

b = a + (5 * b);

Page 36: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Expressões: operadores aritméticos

Resumo:Adição + Subtração -Multiplicação * Divisão /Módulo %

Exemplos:a = 10; b = a % 5;b = a + (5 * b);m = (a + b + c) / 3;Y = m * x + b;

Precedência: () mais interno, esq. para dir. */% da esquerda para direita +- do esquerda para direita

Page 37: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Expressões: operadores relacionais e de igualdade

Resumo:Igualdade>, <, >=, <= (maior, menor, maior ou igual, menor ou igual)Relacionais==, != (igual, diferente)

Exemplos:(a > b) (a maior que b)(b != a) (b diferente de a)(a <= b) (a menor ou igual a b)

Page 38: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Expressões: operadores relacionais e de igualdade

Estrutura de seleção: if - else

Formato geral:

if (<condição>){

<comandos>

}

if (<condição>){ <comandos>} else{ <comandos>}

if (<condição>){ <comandos>} else if (condição){ <comandos>} else if (condição){ <comandos>}

Page 39: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Expressões: operadores relacionais e de

igualdadeEstrutura de seleção: if - else

Exemplo:

if (valor == 15){

cout <, “valor igual a quinze!”;

}

Page 40: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Expressões: operadores relacionais e de

igualdadeEstrutura de seleção: if - else

Exemplo:

if (nota >= 70){

cout << “Aprovado!”;

} else{

cout << “Reprovado!”;

}

Page 41: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

ComandosEstrutura de seleção: if - else

Exemplo:

if (nota >= 70){

cout << “Aprovado!”;

} else if (nota >=60){

cout << “Em recuperação!”;

} else {

cout << “Reprovado!”;

}

Page 42: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

ComandosEstrutura de seleção: if - else

Exemplo:

if (nota >= 70){

cout << “Aprovado!”;

} else if (nota >=60){

cout << “Em recuperação!”;

} else {

cout << “Reprovado!”;

}

Nota >=70

“Aprovado”

Sim

Não

...

Nota >=60

“Recuperação”

fim

Sim

Não

“Reprovado”

Page 43: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Estrutura de repetição: whileFormato geral:

while ( <condição> ){<comandos>

}

Exemplo:cin >> nro; contador = 0;while ( nro < valor_maximo){

nro = nro + 1; contador = contador + 1;

}

Page 44: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Estrutura de programas em C++

Comandos Estrutura de repetição: whileFormato geral:

while ( <condição> ){<comandos>

}

Exemplo:cin >> nro; contador = 0;while ( nro < valor_maximo){

nro = nro + 1; contador = contador + 1;

}

Inicialização de contador

número < máximo

Incrementa número

Incrementa contador

fim Sim

Não

Leitura de número

Page 45: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Uso de vetores

Declaração Definição de tipo, nome e tamanho Opcional: inicialização de valores Indexação: início sempre em zero Exemplos

char letras[30], c; int i=0;while (i<30){

cout<<“digite uma letra:”;cin>>c;letras[i] = c;i = i + 1;

}

Page 46: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Uso de vetores

Declaração Definição de tipo, nome e tamanho Opcional: inicialização de valores Indexação: início sempre em zero Exemplos

char letras[30], c; int i=0;while (i<30){

cout<<“digite uma letra:”;cin>>c;letras[i] = c;i = i + 1;

}

Inicializa contador

Contador < 30

Obtém letra

Incrementa contador

fim Sim

Não

Page 47: Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Aula 2: Introdução ao C++ Professor: Sandro Rigo.

Exercícios

Mapa conceitual Variáveis Expressões Algoritmos (cálculo de médias)