Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Sintaxe da linguagem C/C++
Linguagens de Programação I – By Rui Pais Pág. 1
1. Introdução
Linguagem C++
· Evolução da linguagem C
o suporte para os conceitos de orientação a objectos
· Stroustrup
1º programa “Hello World”
#include <iostream> // incluir biblioteca de Input/Output
int main() // função principal, onde o programa é inciado
{
cout << "Hello World"; // mostrar no ecrã a frase "Hello World"
return 0; // devolver ao S.O. o valor 0 = SUCESS
}
1.1 Palavras Reservadas
asm continue float new signed try
auto default for operator sizeof typedef
break delete friend private static union
case do goto protected struct unsigned
catch double if public switch virtual
char else inline register template void
class enum int return this volatile
const extern long short throw while
Não pode exitir variáveis, funções, classes, objectos, etc. tendo como nome uma
palavra reservada.
1.2 Definição de Comentários
// início de um comentário até ao fim da linha
/* início de comentário
cout << "Hello World"; // escreve no ecrã
*/ fim de comentário
/* início de comentário
cout << "Hello World"; /* erro */
*/ fim de comentário
Sintaxe da linguagem C/C++
Rui Pais Pág. 2
1.3 Declaração de Variáveis
Todas as variáveis devem ser declaradas antes de serem utilizadas.
2º programa “Área de um rectângulo”
#include <iostream> // incluir biblioteca de Input/Output
// protótipo da função perimetro
long perimetro(const long alt, const long larg);
int main()
{
long alt, larg;
cin >> alt >> larg; // ler altura e largura!?
cout << "Área = " << alt * larg << "\n";
cout << "Perimetro = " << perimetro(alt, larg) << endl;
cin >> resposta; // variável não declarada
return 0;
}
long perimetro(const long alt, const long larg)
{ //parametros entram por valor
long res; // declaração de variável
res = alt * 2 + larg *2;
return res; // devolver o resultado
}
1.4 Variáveis Estáticas
As variáveis estáticas são criadas uma única vez, e é inicializada só no momento de
criação. Estas, têm um tempo de vida igual ao programa, donde funcionam como
“variáveis globais – com visibilidade local”.
EXEMPLO:
int contador()
{
static int cont = 0; // variável estática
cont = cont +1;
return cont;
} // Esta função retorna o nº de vezes que foi invocada.
Sintaxe da linguagem C/C++
Rui Pais Pág. 3
1.5 Caracteres Especiais
Os caracteres são definidos entre pelicas, como por exemplo:
char c = ‘A’;
Barra invertida ‘\’ ‘\\’ "ola \\ jj"
Tabulação (tab) ‘\t’ "ola \t jj"
Retrocesso (backspace) ‘\b’ "ola \b jj"
Mudança de linha ‘\n’ "ola \n jj"
Mover para início da linha ‘\r’ "ola \r jj"
Apóstrofe ‘\’’ "ola \’ jj"
Aspas ‘\"’ "ola \” jj"
Caracter ASCII 0 ‘\0’ "ola \0 jj"
1.6 Caracteres Especiais para Números
Número octal hhh ‘\hhh’ "ola \101 jj"
Número hexadecimal xhh ‘\xhh’ "ola \x41 jj"
101(8) = 65 (10) = ‘A’
41(16) = 65 (10) = ‘A’
long valor = 1000L; // especificar que 1000 é nº longo
unsigned idade=25U; //especificar que 25 é nº sem sinal
float peso = 56.6f; //especificar nº do tipo float
double distancia = 3.65E2; // expoente
double zero = 0.0; // 0.0 valor do tipo double
Sintaxe da linguagem C/C++
Rui Pais Pág. 4
1.7 Visibilidade de Variáveis
As variáveis podem ter uma visibilidade global ou local.
Podem existir variáveis globais e locais com o mesmo nome? Sim.
3º programa “Variáveis locais e globais”
#include <iostream> // incluir biblioteca de Input/Output
int i = 0; // variável global – válido até fim ficheiro
int main()
{ int i = 5;
{ int j = 10;
{ int k = 15;
cout << "i = " << i << endl;
cout << "j = " << j << endl;
cout << "k = " << k << endl;
} // k termina aqui
} // j termina aqui
cout << "i = " << i << endl;
cout << "j = " << j << endl;
cout << "k = " << k << endl;
return 0;
}
A validade de uma variável termina no fim bloco { ... }
externo em que está declarada.
Se no exemplo anterior todas as variáveis tiverem o mesmo
nome, qual o resultado do programa?
1.8 Conversão de Tipos
Conversão Implicita:
double x = 7; // conversão de int para double
int i = 4.5; // conversão de double para int // i==4
// perde-se informação
char espaco = 32; // conversao de int para char
// igual a: char espaco = ‘ ‘;
Sintaxe da linguagem C/C++
Rui Pais Pág. 5
Conversão Explicita:
double x = (double) 7; // conversão de int para double
int i = (int) 4.5; // conversão de double para int
1.9 Expressões arritméticas e lógicas
Expressões arritméticas:
São construidas à custa dos operadores:
+ * - / % ( )
int i = 5 * 6 + 4 * 7 + 3;
//utilizar parêntices para alterar a precedência dos operadores
int j = 5 * 6 + 4 * (7 + 3);
double x = 5 / 7; // divisao inteira // x == 0
double y = 5 / 7.0; // divisão real // y == 0.714286
int x = 55 % 10.0; // resto da divisão só para inteiros
Expressões lógicas:
São construidas à custa dos operadores:
Operador Descrição
== Igualdade
!= Diferente
< Menor
<= Menor ou igual
> Maior
>= Maior ou igual
! Negação do valor lógico
|| "ou" lógico
&& "e" lógico
e devolvem um valor booleano: true ou false
int x = 5, y = 10;
bool flag;
flag = x==y;
Sintaxe da linguagem C/C++
Rui Pais Pág. 6
if(x >= y) { ... }
if( ! (x == 5 && y !=5) || (! x < y) )
{ ... }
Nota:
! ( a < b ) == ( a >= b )
! ( a <= b ) == ( a > b )
! ( a && b ) == ( !a || !b )
! ( a || b ) == ( !a && !b )
EXEMPLO:
int i = 5, j = 8;
if( (! (i > 5 && j < 10) ) == true ) { ... }
é equivalente ? a :
if( ( (i <= 5 || j >= 10) ) == true ) { ... }
1.10 Comando “if” e “switch”
Alteração de fluxo simples:
if (condição) // condição é uma Expressões lógicas!
{ // executar se condição é verdadeira
acção1;
acção2;
...
}
Alteração de fluxo composta:
if (condição) // condição é uma Expressões lógicas!
{
acção1;
...
}
else // se condição é false
{
acção10;
...
}
Sintaxe da linguagem C/C++
Rui Pais Pág. 7
Multiplos “if” podem ser substituidos por um “switch”
EXEMPLO 1:
if(x == 5) { bloco1 }
if(x == 10) { bloco2 }
if(x == 25) { bloco3 }
é equivalente a:
switch(x)
{ case 5:
{ bloco1 }
break;
case 10:
{ bloco2 }
break;
case 25:
{ bloco3 }
break;
}
EXEMPLO 2: // “if”s encadeados
if(x == 5)
{ bloco1 }
else
{
if(x == 10)
{ bloco2 }
else
{ bloco3 }
}
é equivalente ? a:
switch(x)
{ case 5:
{ bloco1 }
break;
case 10:
{ bloco2 }
break;
default: // se nenhum dos casos anteriores for válido
{ bloco3 } // executa o bloco por omissão
break;
}
Sintaxe da linguagem C/C++
Rui Pais Pág. 8
1.11 Ciclos “while”, “for” e “do ... while”
Os ciclos permitem a repetição de um bloco de comando,
tendo em atenção uma condição de paragem.
Ciclo while:
while(condição) // enquanto a condição for verdadeira
{ // executar o bloco
bloco
}
EXEMPLO1:
int x = 5;
while(x < 10)
{ cout << "X= " << x << endl;
x = x +1;
}
EXEMPLO2: // ciclo infinito
int x = 5;
while(true) // condição é sempre verdadeira
{
cout << "X= " << x << endl;
x = x +1;
if( x >= 10)
break; // sair do ciclo
}
Ciclo for:
for(bloco1 ; condição ; bloco2 )
{
bloco3
}
é equivalente a:
bloco1;
while(condição)
{
bloco3;
bloco2;
}
Sintaxe da linguagem C/C++
Rui Pais Pág. 9
EXEMPLO1:
for(int x = 5; x < 10 ; x = x + 1)
{
cout << "X= " << x << endl;
}
EXEMPLO2: // ciclo infinito
for(int x = 5; true; x = x +1) // condição sempre true
{
cout << "X= " << x << endl;
if( x >= 10)
break; // sair do ciclo
}
EXEMPLO3: // ciclo infinito
int x = 5
for( ; ; ) // condição sempre true
{
cout << "X= " << x << endl;
if( x >= 10)
break; // sair do ciclo
x = x + 1;
}
Ciclo do ... while:
do
{
bloco // bloco é sempre executado 1 vez
}
while(consição); // repetir o bloco enquanto condição
// é verdadeira
EXEMPLO1:
int x = 5;
do
{
cout << "X= " << x << endl;
x = x +1;
} while(x < 10);
Sintaxe da linguagem C/C++
Rui Pais Pág. 10
EXEMPLO2: // ciclo infinito
int x = 5;
do
{
cout << "X= " << x << endl;
if( x >= 10)
break; // sair do ciclo
x = x +1;
} while(true); // condição sempre true
Sintaxe da linguagem C/C++
Rui Pais Pág. 11
1.12 Bibliotecas
Bibliotecas são conjunto de funções que encontra-se compiladas em ficheiros com a
extensão “.a” e “.lib”, nos sistemas operativos Linux e Windows respectivamente.
Para utilizar as funções de uma determinada biblioteca, é necessário incluir um
ficheiro com o protótipo das funções disponíveis por essa biblioteca (ficheiro com
extensão “.h”).
Em C++ podem ser utilizadas todas as bibliotecas da linguagem C conjuntamente
com as bibliotecas da linguagem C++.
Bibliotecas da linguagem C:
Biblioteca
C
Biblioteca C++
equivalente Conteúdo
alloc.h Calloc Funções para manipulação de memória
assert.h Cassert Funções para auxílio na detecção de erros
complex.h Ccomplex Funções para manipulação de números complexos
string.h Cstring Funções para manipulação de cadeia de caracteres (strcpy,
strcat, substr, ....)
ctype.h Cctype Funções para manipulação de cadeia de caracteres (toupper,
tolower, ...)
errno.h Cerrno Funções para manipulação de números de erros
float.h cfloat Contém os limites relacionados a números em virgula
flutuante
math.h cmath Funções matemáticas
signal.h csignal Funções para manipulação de sinais
stdio.h cstdio Funções para manupulação de entrada e saída.
stdlib.h cstdlib Fnções para manipulação de memória, conversão entre strings
e números, geração de números aleatórios, etc.
time.h ctime Funções para manipulação de tempo e datas
Bibliotecas da linguagem C++:
Biblioteca C++ Conteúdo
iostream Funções para manipulação de entrada e saída (Input/Output)
fstream Funções para manipulação de ficheiro entrada e/ou saída
vector Funções para manipulação de vectores (sequência de elementos)
string Funções para manipulação de strings (sequência de caracteres)