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 Introdução Algoritmo Sintaxe (livre) para a descrição de soluções Introdução Algoritmo Sintaxe (livre) para a descrição de soluções Definição de variáveis e estruturas de dados 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 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 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 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 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 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 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 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 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 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) Introdução Alguns conceitos compartilhados Definir o número de valores Repetir Ler o valor da nota Somar valor lido a valor total média = valor total / número de valores Exibir 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; ... 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++: 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) -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 Implementação de programas disco Gera arquivo fonte (.cpp) Lê arquivo fonte (.cpp) Gera arquivo objeto Lê arquivo objeto, Lê arquivos de bibliotecas Gera arquivo executável No Visual C++: Editor de texto -File New -File Save -Build compile -Build build .exe // teste in C++ #include <iostream> Compilador int main() { std::cout << "Bem vindo C++!\n"; Editor de ligação return 0; (linker) } 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) 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; } Estrutura de programas em C++ Exemplo de estrutura geral Biblioteca utilizada #include <stdio.h> linha de comentário /* impressão de uma mensagem simples */ int main() Bloco principal { printf(“\n Mensagem inicial em c! \n”); return 0; } 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 utilizadas int main() { // trecho do programa principal //....... return 0; } //definições de rotinas auxiliares */ */ */ */ 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) 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” 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> 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âmetros Início e fim delimitados por chaves ( “{“ e “}” ) 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>; Estrutura de programas em C++ Variáveis //declaração: int a, b; char c; float d; int e; Inteiro (int): 2 bytes Caractere (char): 1 byte Ponto flutuante (float): 4 bytes Memória: Endereço| Conteúdo -----------------------------100 | a 101 | a 102 | b 103 | b 104 | c 105 | d 106 | d 107 | d 108 | d 109 | d 110 | e 111 | e 112 | 113 | 114 | Estrutura de programas em C++ Variáveis //declaração: int a, b; char c; float d; int e; Inteiro (int): 2 bytes Caractere (char): 1 byte Ponto flutuante (float): 4 bytes Memória: Endereço| Conteúdo -----------------------------100 | 00 } 101 | 00 102 | 00 } 103 | 01 104 | 33 (“!”) } 105 | d 106 | d 107 | d 108 | d 109 | d 110 | 00 111 | 02 } 112 | 113 | 114 | Exemplo de uso: a = 0; b = 1; c = “!”; e = 2; Caractere Código ASCII 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>}; Estrutura de programas em C++ Variáveis //declaração: int a[2], b; char c[4]; Inteiro (int): 2 bytes Caractere (char): 1 byte Memória: Endereço| Conteúdo -----------------------------100 | 00 } 101 | 01 102 | 00 } 103 | 02 104 | 00 } 105 | 10 106 | 79 (“O”) 107 | 105 (“i”) 108 | 33 (“!”) 109 | 63 (“?”) Oi!?? 0012FF78 1 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]; Estrutura de programas em C++ Variáveis Tamanhos de alguns tipos de dados Tipo Tamanho Valores possíveis unsigned char 1 byte 0 - 255 char 1 byte -128 - 127 unsigned int 2 bytes 0 – 65535 int 2 bytes -35768 – 32767 float 4 bytes 3.4E-38 – 3.4e+38 double 8 bytes 1.7E-308 – 1.7E+308 Estrutura de programas em C++ Variáveis Tipo Tamanho unsigned char 1 byte Valores possíveis 0 - 255 Forma de representação Programador Uso de memória Exemplo:Binário 00 01 10 11 100 Decimal 0 1 2 3 4 (3bits) ou 0 (2bits) 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 “}”) 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); 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 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) Estrutura de programas em C++ Comandos Expressões: operadores relacionais e de igualdade Estrutura de seleção: if - else Formato geral: if (<condição>){ if (<condição>){ <comandos> <comandos> } else{ } <comandos> } if (<condição>){ <comandos> } else if (condição){ <comandos> } else if (condição){ <comandos> } Estrutura de programas em C++ Comandos Expressões: operadores relacionais e de igualdade Estrutura de seleção: if - else Exemplo: if (valor == 15){ cout <, “valor igual a quinze!”; } Estrutura de programas em C++ Comandos Expressões: operadores relacionais e de igualdade Estrutura de seleção: if - else Exemplo: if (nota >= 70){ cout << “Aprovado!”; } else{ cout << “Reprovado!”; } Estrutura de programas em C++ Comandos Estrutura de seleção: if - else Exemplo: if (nota >= 70){ cout << “Aprovado!”; } else if (nota >=60){ cout << “Em recuperação!”; } else { cout << “Reprovado!”; } Estrutura de programas em C++ Comandos ... Não Estrutura de seleção: if - else Exemplo: if (nota >= 70){ cout << “Aprovado!”; } else if (nota >=60){ Não cout << “Em recuperação!”; } else { cout << “Reprovado!”; “Reprovado” } Nota >=70 Sim “Aprovado” Nota >=60 Sim “Recuperação” fim Estrutura de programas em C++ Comandos Estrutura de repetição: while Formato geral: while ( <condição> ){ <comandos> } Exemplo: cin >> nro; contador = 0; while ( nro < valor_maximo){ nro = nro + 1; contador = contador + 1; } Estrutura de programas em C++ Leitura de número Comandos Estrutura de repetição: while Formato 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ão número < máximo fim Sim Incrementa número Incrementa contador 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; } 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 Não char letras[30], c; int i=0; while (i<30){ fim cout<<“digite uma letra:”; cin>>c; letras[i] = c; i = i + 1; } Inicializa contador Contador < 30 Sim Obtém letra Incrementa contador Exercícios Mapa conceitual Variáveis Expressões Algoritmos (cálculo de médias)