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)