Linguagem de
Programação II
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
Capitulo 1
Introdução ao C++
C++ - Superconjunto do C
O C++ aceita a sintaxe C, acrescentando melhoramentos,
ampliando o escopo de aplicações, e possibilitando o
desenvolvimento de programas baseados no paradigma da
Orientação a Objetos;
O C++ mantém à característica do C de ser uma linguagem de
pequeno tamanho, o C++ possui apenas 62 palavras reservadas (32
delas comuns ao C);
A diferença maior se dá na unidade de programação: no C são as
funções enquanto que no C++ são as classes (que instanciam
objetos e contém funções)
C++
C
Palavras reservadas :
auto
continue
enum
if
short
switch
volatile
break
default
extern
int
signed
typedef
while
asm
delete
inline
private
template
typeid
bool
dynamic_cast
mutable
protected
this
typename
case
do
float
long
sizeof
union
char
double
for
register
static
unsigned
const
else
goto
return
struct
void
catch
class
explicit
false
namespace
new
reinterpret_cast
public
throw
true
using
virtual
const_cast
friend
operator
static_cast
try
wchar_t
Estrutura de um programa C++
Estrutura básica de um programa C++
#include <...>
using namespace ... ;
tipo main() {
comandos;
}
Estrutura de um programa C++
Exemplo de um programa C++
Arquivo cabeçalho
Namespace
// primeiro.cpp
#include <iostream>
Comentário
using std::cout;
// ou - using namespace std;
int main() {
cout << “Meu Primeiro Programa em C++”;
return 0;
}
Cout é um objeto que exibe a
informações na saída-padrão
Encerra função main e
retorna 0
Arquivos cabeçalho
Contêm protótipos de funções, definições de macros,
declarações de tipos de estrutura, de classes e de
constantes
São processados em fase anterior a compilação chamado
pré-processamento
Formato
Significado
#include <xxx>
xxx procurado no diretório padrão de arquivos-cabeçalho
#include “xxx”
xxx procurado no diretório corrente e se não encontrado no
diretório padrão de arquivos-cabeçalho
Namespaces
Namespace – faz parte do
que se chama Ambiente de
Nomes no C++, que é um
mecanismo para expressar
agrupamentos lógicos
# include <iostream>
using namespace std;
int main {
int idade;
cout << “Digite a sua idade”;
cin >> idade;
Exemplo:
cout << “Voce tem ” << idade
calc1::calcular(valor1); e
calc2::calcular(valor2)
<< “anos ” << “\n”;
return 0;
Namespace std
Estão definidos os vários
elementos como por exemplo os
objetos cin e cout
}
Etapas para criação de um programa
A partir do programa fonte (arquivo .cpp) são necessárias
duas etapas para tornar-se um programa executável:
Compilação: compilador traduzir o programa-fonte em linguagem de
máquina. Resulta um programa-objeto (.o)
Link-edição: linker liga o programa-objeto, código-objeto de funções
utilizadas e rotinas-padrão de inicialização. Resulta no programa
executável
Etapas para criação de um programa
Programa fonte
Compilador
Código objeto de funções
Programa objeto
Linker
Programa executável
Rotinas-padrão
Capitulo 2
Elementos da linguagem
Identificadores
São nomes atribuídos pelo programador a variáveis,
funções, classes, etc.
Regras:
Conter caracteres alfabéticos minusculo/maiusculo, numericos ou _
(sublinhado)
O primeiro caractere deve ser alfabetico ou _ (sublinhado)
Não há limite de comprimento
Valor  correto
valor@  incorreto
Saldo Conta  incorreto
delete  incorreto
2nota  incorreto
Variáveis
Refere-se a uma posição de memória onde um valor é
armazenado, com possibilidade de ser alterado durante
execução de um programa
Deve ter um nome
Tem um determinado comprimento em bits conforme seu
tipo
Declaração de Variável
Declaração e inicialização: igual ao C;
Nomes de variáveis: igual ao C;
Locais de declaração: inovação;
pode-se declarar uma variável no momento do seu uso
for (int i = 0; i < 20; i++) {...}
Case sensitivity
Escopo: igual ao C;
Permite variáveis homônimas (mesmo nome, mas escopo diferente)
int j = 0;
exemplo() {
int x, j;
...
for (int i=0;...)
j = 5; // refere-se ao j local
...
}
Operador de Resolução de Escopo (::)
#include <iostream>
O C++ diferencia variáveis
local e global homônimas com o
Operador de Resolução de
Escopo :: (também chamado
Qualificação de Escopo), que
colocado em frente à variável,
faz com que o programa acesse
a global.
Um erro será apontado, caso
não exista a variável global.
using namespace std;
int x = 2;
int dob (int v);
int main () {
int x = 0;
cout << “local = “<< dob( x );
cout << “global = ”<< dob(::x);
return 0;
}
int dob (int v) {
return 2*v;
}
-.-.-.-.-.-.-.-.-.-.-.
Resultado :
local
= 0
global = 4
Tipos do C++
Tipo
Lógico
Caracter
Inteiro
Real
String
Nome
Tamanho
bool
char, unsigned
char
int, unsigned
(unsigned int),
short (short int),
long (long int),
unsigned long
float, double, long
double
void
string
1
1
2a4
Tipos
Nativos
4 a 10
-
Classe
definida
<string.h>
em biblioteca
Tipos do C
Tipo
Nome
caracter
positivo
inteiro
positivo
char
unsigned char
int (signed)
unsigned int
(unsigned)
short int
(short)
long int (long)
unsigned long
float
double
long double
pequeno
grande
grande positivo
real
grande
Bytes
8
1
8
1
16/32 2/4
16/32 2/4
Bits
Faixa
-128 a 127
0 a 255
16
2
-32768 a 32767
32
32
32
64
80
4
4
4
8
10
-2.14*10 9 a 2.14*10 9
0 a 4.29* 10 9
3.4 e -38 a 3.4 e 38
1.7 e -308 a 1.7 e 308
3.4 e - 4932 a 1.1 e 4932
Tamanhos
char
‘a’
bool
1
short
756
int
100000000
int*
&c1
double
char[12]
1234567e34
Alô, mundo! \0
Constantes inteiras
C++ trata constantes inteiras como int a não ser que haja
motivos para não o fazer.
Há dois motivos
O valor é muito grande
Utilização de um sufixo que indique um tipo específico
Exemplos:
cout << 10; // trata o valor 10 como um int
cout << 20L; // trata o valor 20 como um long int
cout << 30LL; // trata o 30 como long long int
Constantes ponto flutuante
C++ trata ponto-flutuante como double a não ser que haja
um sufixo indicando para não o fazer
Exemplo:
cout << 2.32F;
cout << 2.3E3F;
count << 3.423L;
// trata o valor 2.32 como float
// trata o valor 2.3E3 como float
// trata o valor 3.423 como long double;
Constantes simbólicas
Constantes identificadas por um nome
ex.: const int limite =10
int vetor [limite];
Erro de overflow
Limite das variáveis
Quando valor ultrapassa tamanho do tipo o valor é truncado
Exemplo dos 40.000 que viraram 32.767
Programa não é interrompido
Um erro “silencioso” é criado
Erros no programa todo
Operadores
Operadores determinam as operações básicas que podem ser
executadas nos valores.
Levam em consideração os tipos das variáveis.
Em torno de 40 operadores.
Precedência dos operadores.
Há diversos tipos de operadores:
Atribuição
Atribuição Reduzida
Aritméticos
Lógicos
Condicionais
Bit a bit
Incremento e Decremento
…
Precedência e Associatividade
Diversos operadores podem ser utilizados na mesma
expressão.
A ordem de execução dos operadores pode ser determinada
explicitamente pelo uso de parêntesis.
Quando não são usados parêntesis, o compilador usa regras de
precedência para determinar qual operação executar primeiro.
Se duas operações têm a mesma precedência, executa de
acordo com regra de associatividade (normalmente da
esquerda para a direita).
Precedência e Associatividade
Maior precedência
( )
[ ]
->
! ~ ++ -- . -(unário) (cast) *(unário) &(unário) sizeof
* / %
+ << >>
<<= >>=
== !=
&
^
|
&&
||
?
= += -= *= /=
Menor precedência
,
Exemplos
a
d
e
f
g
f
a
=
=
=
=
=
=
=
b + c; /* Atribuição tem menor precedência que soma */
(a + b) * c;
/* Determinada pelos parêntesis */
a + b * c;
/* * tem maior precedência que + */
a + b – c;
/* (a + b) – c */
f/e*g;
/* (f/e)*g */
a + b * c – d / e; /* (a + (b*c)) – (d/e) */
b = c = d = 0;
/* (a = (b = (c = (d = 0)))) */
Typecast
Recurso que permite forçar a conversãod e um tipo em
outro, de modo explicito
Pode ser feito antes ou após uma operação
Exemplo:
char letra = ‘z’;
cout << “O codigo ASCII da letra “ << letra “ eh: ”;
cout << int(letra) << endl;
Saida:
O cdigo ASCII da letra Z eh 122
Download

C++