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++ Uso de vetores 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 Permite declaração de variáveis 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 Permite declaração de variáveis 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 Permite declaração de variáveis 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 Permite declaração de variáveis 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 C++ Cout<< endl<<“Resultado: “ <<valor<<endl; Exibir o resultado C printf(“\nResultado: %d\n”,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 PHP echo(“\nResultado: “.$valor.”\n”); Mapeamento para a linguagem de programação PASCAL write(“Resultado: “); Writeln(valor); Python print “\nResultado:” print valor
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 .... 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; 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
Introdução Implementação de programas No Visual C++: File New File Save Build compile Build build .exe 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 bibliotecas Gera arquivo executável
Introdução Implementação de programas No Visual C++: File New File Save Build compile Build build .exe 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 bibliotecas Gera arquivo executável
Introdução Implementação de programas No Visual C++: File New LZ ø+A2L k .drectve b $ .debug$S „ † H B.CRT$XCU – ¢ @ 0À.text = À ý % P`.rdata = @0@.debug$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 Introdução Implementação de programas No Visual C++: File New File Save Build compile Build build .exe 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 bibliotecas Gera arquivo executável // teste in C++ #include <iostream> int main() { std::cout << "Bem vindo C++!\n"; return 0; }
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 #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
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 Memória: Endereço| Conteúdo ------------------------------ | a | b | c | d | e | //declaração: int a, b; char c; float d; int e; Inteiro (int): 2 bytes Caractere (char): 1 byte Ponto flutuante (float): 4 bytes
Estrutura de programas em C++ Variáveis Memória: Endereço| Conteúdo ------------------------------ | 00 | 01 | 33 (“!”) | d | 02 | Exemplo de uso: a = 0; b = 1; c = “!”; e = 2; //declaração: int a, b; char c; float d; int e; } } } Inteiro (int): 2 bytes Caractere (char): 1 byte Ponto flutuante (float): 4 bytes } 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 Memória: Endereço| Conteúdo ------------------------------ | 00 | 01 | 02 | 10 | 79 (“O”) | 105 (“i”) | 33 (“!”) | 63 (“?”) 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<< a[0]; //declaração: int a[2], b; char c[4]; } } } Inteiro (int): 2 bytes Caractere (char): 1 byte Oi!?? 0012FF78 1
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 Valores possíveis unsigned char 1 byte 0 - 255 Forma de representação Programador Uso de memória Exemplo:Binário Decimal 00 0 01 1 10 2 11 3 100 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>){ <comandos> } if (<condição>){ <comandos> } else{ } if (<condição>){ <comandos> } else if (condição){ }
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 Estrutura de seleção: if - else Exemplo: if (nota >= 70){ cout << “Aprovado!”; } else if (nota >=60){ cout << “Em recuperação!”; } else { cout << “Reprovado!”; } Não Nota >=70 Sim “Aprovado” Não Nota >=60 Sim “Reprovado” “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 Sim fim 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 char letras[30], c; int i=0; while (i<30){ cout<<“digite uma letra:”; cin>>c; letras[i] = c; i = i + 1; } Inicializa contador Não Contador < 30 Sim fim Obtém letra Incrementa contador
Exercícios Mapa conceitual Variáveis Expressões Algoritmos (cálculo de médias)