Status atual: a linguagem mais utilizada profissionalmente em todo o mundo Faz parte do currculo da maioria dos cursos de computao Padro atual da linguagem C++: homologado pelo comit ISO em meados de 1998
2002, Ulysses de Oliveira 5
Constituio em C: letras, dgitos e o caractere sublinha (_); o primeiro constituinte no pode ser um dgito Nmero de caracteres permitido: depende da implementao de C utilizada; padro requer que compiladores aceitem, pelo menos, identificadores cm 31 caracteres
2002, Ulysses de Oliveira 6
Palavras reservadas Tm significado prprio na linguagem No podem ser usados como identificadores
2002, Ulysses de Oliveira 7
void
Escalares
Agregados
bool
Aritmticos
Enumeraes
Ponteiros
Inteiros
Ponto-flutuante
int
char
float
double
8
10
11
1.2.3 Constantes
Tipos de constantes:
12
Constantes Inteiras
Decimais: utilizam dgitos de 0 a 9 o primeiro dgito no pode ser zero, exceto quando o prprio valor zero Octais: comeam com 0 (zero) utilizam os dgitos de 0 a 7 Hexadecimais: comeam com 0x ou 0X utilizam os dgitos de 0 a 9, e as letras de A a F
2002, Ulysses de Oliveira 13
Constantes Inteiras
Sufixos: l (ou L): constante interpretada como long (e.g., 15L,
0XAAB3FL) u ou U: constante interpretada como unsigned (e.g., 15U, 0XAAB3FU) Acomodao de constante inteira sem sufixo: int (se couber) long (se couber) unsigned long (se indefinido (i.e., truncamento, erro de couber) overflow) Acomodao de constante inteira com sufixo: anlogo
2002, Ulysses de Oliveira 14
15
Caracteres Constantes
Caractere Constante:
Representada por caractere entre apstrofos (e.g., 'A') Compilador traduz para o valor correspondente no cdigo utilizado (e.g., 65 em ASCII)
16
Declaraes de Variveis
Sintaxe: palavra representando o tipo da varivel seguida do nome da varivel; variveis de um mesmo tipo podem ser declaradas juntas e separadas por vrgulas Exemplo: int minhaVar, i, j; declara as variveis minhaVar, i e j como sendo do tipo int
2002, Ulysses de Oliveira 18
Declaraes de Variveis
para a Recomendaes identificadores para variveis: escolha de
(e.g.,
Escolha nomes que sejam significativos matricula mais significativo do que x ou m).
Evite utilizar nomes de variveis que sejam muito parecidos ou que difiram em apenas um caractere (e.g., primeiraNota e segundaNota so melhores do que nota1 e nota2). Evite utilizar l (ele) e o () como nomes de variveis pois so facilmente confundidos com 1 (um) e 0 (zero)
2002, Ulysses de Oliveira 19
1.2.5 Atribuio
A instruo mais simples em C++ Sintaxe:
<varivel> = <expresso>;
de
minhaVar = 0;
20
21
Constantes Simblicas
Definida com a diretiva #define
compilador substitui todas as ocorrncia de PI por seu valor declarado (i.e., 3.14)
2002, Ulysses de Oliveira 22
OPERAO Menos unrio (inverso de sinal) Mais unrio Adio Subtrao Multiplicao Diviso Resto da diviso inteira
23
24
1.3.3 Mistura de Tipos e Converses Automticas Converses automticas (ou implcitas): permitem misturas de tipos em expresses responsveis por resultados inesperados
Converso de Atribuio: Lado direito da atribuio convertido para o tipo do lado esquerdo Problema: quando o tipo do lado esquerdo mais curto do que o tipo do lado direito Exemplo: se c uma varivel do tipo char, a atribuio: c = 882 pode resultar na atribuio do valor 114 a c)
2002, Ulysses de Oliveira 25
de Compatibilidade de Converso Operandos: variveis e constantes so convertidos para que um operador tenha como operandos do mesmo tipo; obedece uma hierarquia de tipos
26
double
float
x/y
a varivel x ser convertida automaticamente para float
2002, Ulysses de Oliveira
long int
unsigned int
int
27
a += b a -= b a *= b a /= b a %= b
a = a + b a = a - b a = a * b a = a / b a = a % b
1.3.6 Operadores de Incremento e de Decremento Operadores de Incremento e de Decremento: Aplicam-se a variveis numricas ou ponteiros Incremento: ++ Decremento: - Efeitos colaterais: Incremento: adiciona 1 Decremento: subtrai 1
2002, Ulysses de Oliveira 31
Operadores de Incremento e de Decremento Verses: Prefixa (e.g., ++x) Sufixa (e.g., x++) Resultados: Verso prefixa: valor da varivel aps o efeito colateral Verso sufixa: valor da varivel antes do efeito colateral
2002, Ulysses de Oliveira 32
33
Exemplo:
16 int 4
4 i, j = 4;
i = j * j++; A expresso poder resultar em 16 (se j for 20 5 avaliado primeiro)4 A expresso poder resultar em 20 (se j++ for avaliado primeiro)
2002, Ulysses de Oliveira 34
Exemplo:
unsigned long tamanho = sizeof(double);
2002, Ulysses de Oliveira 35
1.4 Operadores Relacionais e Lgicos Operadores Relacionais: Operadores binrios utilizados em expresses de comparao
36
Operadores Relacionais
OPERADOR > DENOMINAO maior do que APLICAO a>b RESULTADO true se a maior do b; false, caso contrrio >= maior do que ou a igual a >= b true se a maior do que ou igual a b; false, caso contrrio < menor do que a<b true se a menor do b; 0, caso contrrio <= menor do que ou igual a a <= b true se a menor do que ou igual a b; false, caso contrrio == igual a a == b true se a igual a b; false, caso contrrio != diferente de a != b true se a diferente de b; false, caso contrrio
37
Operadores Lgicos
Operadores prioridade): lgicos (em ordem decrescente de
SMBOLO ! && ||
Precedncias:
! tem a mesma precedncia dos operadores unrios && e || tm precedncias mais baixas do que operadores aritmticos e relacionais, o operador && tem precedncia mais alta do que o operador ||
2002, Ulysses de Oliveira 39
Operadores Lgicos
Resultados:
X
0 ou false diferente de 0 ou true
!X
true false
X
0 ou false 0 ou false diferente de 0 ou true diferente de 0 ou true
Y
0 ou false diferente de 0 ou true 0 ou false diferente de 0 ou true
X && Y
false false false true
X || Y
false true true true
Estruturas de Controle
Desvios condicionais: permitem decidir, usando uma condio, se uma poro do programa ser executada ou no Desvios incondicionais: indicam, de modo incondicional que instruo ser executada em seguida Repeties (ou iteraes): permitem a execuo de uma ou mais instrues repetidamente at que uma condio seja satisfeita
2002, Ulysses de Oliveira 42
43
44
Partes:
Condio (teste): expresso entre parnteses (usualmente uma expresso relacional) Corpo do lao: instruo ou seqncia de instrues entre chaves
2002, Ulysses de Oliveira 45
Exemplo 2:
long x = 0L, y = 10L; while (x < y) { ++x; --y; }
Executado 5 vezes x = 5; y = 5
Exemplo 3:
long x = 0L, y = 10L; while (x++ < y--) {
Executado 5 */ ; /* Corpo Vazio vezes
Exemplo 4:
long x = 0L, y = 10L; while (++x < --y) {
Executado 4 */ ; /* Corpo Vazio vezes
6; y = 4
x = 5; y = 5
47
Esta instruo ser executada exatamente uma vez se o valor de x for 0 e o programa entrar em loop sem fim se o valor de x for diferente de 0
48
Partes:
condio: <expresso> corpo do lao: <instruo>
Exemplo 2:
long do { ++x; --y;
Executado 5 vezes x = 5; y = 5
x = 0L, y = 10L;
x = 0L, y = 10L;
Exemplo 3:
long do { x = 0L, y = 10L;
Executado 6 vezes
Exemplo 4:
long do { x = 0L, y = 10L;
Executado 5 vezes
50
Interpretao
Aps a execuo do corpo do lao, <expresso3> avaliada e retorna-se ao segundo passo
Situao 1
Situao 2
<expresso> avaliada
Interpretao
Exemplos de Instrues if
Quando estas instrues sero executadas? Exemplo 1:
if (x) y++; else y--; z = x + y;
Executada quando x for diferente de zero Executada quando x for igual a zero Executada sempre
Exemplo 2:
if (x) y++; y--;
Executada quando x for diferente de zero Executada sempre
Exemplo 3:
int x = 0; if (x = 10)
y += 1;
Executada sempre
55
Instrues if
Aninhamento de ifs:
Desvios mltiplos Instruo seguindo o if ou seguindo o else tambm uma instruo if Regra de Casamento entre ifs e elses Um else est sempre associado ao if mais prximo que no tenha ainda um else associado, a no ser que o if mais prximo do else esteja isolado entre chaves
56
x = b; else x = c;
2002, Ulysses de Oliveira
57
Exemplo 2:
if (x) if (y) { y += x; } else x -= y;
Executada quando x e y so diferentes de zero
Operador Condicional
Formato: x ? y : z Resultado: y quando x for diferente de zero, e z quando x for zero Ordem de avaliao: o primeiro operando sempre avaliado em primeiro lugar, em seguida avaliado o segundo ou o terceiro operando Precedncia: maior apenas do que a dos operadores de atribuio e do operador , Associatividade: da direita para a esquerda
2002, Ulysses de Oliveira 59
Instruo switch
Instruo de seleo mltipla usada quando existem muitas ramificaes a seguir Melhora a legibilidade e a eficincia do programa
Interpretao
switch (<expresso>) { case <expresso constante 1> : <instruo 1> case <expresso constante 2> : <instruo 2>
. :
case <expresso constante N> : <instruo N> default : <instruo D> }
Se <expresso> no resultar em nenhum valor seguindo um case, as instrues que seguem a parte inteiro (e.g., resultar numdefault sero executadas
Se <expresso> resultar em alguma expresso seguindo um case, todas as instrues que seguem esta expresso sero executadas
<expresso> deve
2002, Ulysses de Oliveira
Instruo switch
Para evitar que todas as instrues seguindo o case selecionado sejam executadas, usa-se: break (mais comum), goto ou return
Exemplo: char meuCaractere; ... switch (meuCaractere) { case 'A': Instrues referentes ... break; opo 'A' case 'B': Instrues referentes ... opo 'B' break; case 'C': Instrues referentes ... opo 'C' break; default: Instrues referentes ... opo default break; 2002, Ulysses de Oliveira Este break desnecessrio }
63
Instruo switch
Quando mais de uma opo case corresponde a uma mesma instruo, estas opes so justapostas e seguidas pela instruo comum
Exemplo: char meuCaractere; ... switch (meuCaractere) { case 'a': case 'A': Instrues referentes ... opo 'a' ou 'A' break; case 'b': case 'B': Instrues referentes ... opo 'b' ou 'B' break; default: Instrues referentes ... opo default break; }
64
1.5.5 Desvios Incondicionais Permitem o desvio do fluxo programa para outras partes programa independentemente avaliao de qualquer condio do do da
65
Instruo break
Causa o trmino prematuro de uma estrutura de seleo (switch) Pode tambm ser utilizada em estruturas de repetio Exemplo:
while (x){ ... if (y) break; /* Causa a sada do while */ ... }
2002, Ulysses de Oliveira 66
til quando se deseja desviar um trecho do corpo de um lao por alguma razo
2002, Ulysses de Oliveira 67
Exemplo 1:
for (i = 0; i < 10; ++i){ ... if (i == 5) continue; ... }
Essas instrues no so executadas quando i = 5 Essas instrues no so executadas quando y 0 Expresso avaliada aps continue
...
68
<rtulo>: identificador que indica a instruo para onde o fluxo do programa ser desviado O rtulo deve preceder a instruo rotulada e ser seguido por dois-pontos (:):
<rtulo> : <instruo>
2002, Ulysses de Oliveira 69
Instruo goto Regras: Duas instrues no podem possuir o mesmo rtulo Uma instruo rotulada deve estar situada na mesma funo que o goto que a referencia
2002, Ulysses de Oliveira 70
Operador Vrgula
Uso mais comum: em expresses for Exemplos:
Exemplo 1:
for (j = 10, k = 1; j - k > 0; j--, k++){ ... }
A ordem dos operandos no faz diferena
Exemplo 2:
for (j = 5, k = 10; j-- > 0, k-- > 0; ){ ... }
2002, Ulysses de Oliveira