Você está na página 1de 11

Sintaxe da linguagem C/C++

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

Linguagens de Programação I – By Rui Pais Pág. 1


Sintaxe da linguagem C/C++

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.

Rui Pais Pág. 2


Sintaxe da linguagem C/C++

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

Rui Pais Pág. 3


Sintaxe da linguagem C/C++

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 = ‘ ‘;

Rui Pais Pág. 4


Sintaxe da linguagem C/C++

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;

Rui Pais Pág. 5


Sintaxe da linguagem C/C++

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;
...
}

Rui Pais Pág. 6


Sintaxe da linguagem C/C++

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;
}

Rui Pais Pág. 7


Sintaxe da linguagem C/C++

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;
}

Rui Pais Pág. 8


Sintaxe da linguagem C/C++

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);

Rui Pais Pág. 9


Sintaxe da linguagem C/C++

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

Rui Pais Pág. 10


Sintaxe da linguagem C/C++

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 Biblioteca C++


Conteúdo
C equivalente
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)

Rui Pais Pág. 11