Linguagem C++ Evoluo da linguagem C o suporte para os conceitos de orientao a objectos Stroustrup
1 programa Hello World
#include <iostream> // incluir biblioteca de Input/Output
int main() // funo 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
No pode exitir variveis, funes, classes, objectos, etc. tendo como nome uma palavra reservada.
1.2 Definio de Comentrios
// incio de um comentrio at ao fim da linha
/* incio de comentrio cout << "Hello World"; // escreve no ecr */ fim de comentrio
/* incio de comentrio cout << "Hello World"; /* erro */ */ fim de comentrio Sintaxe da linguagem C/C++
Rui Pais Pg. 2
1.3 Declarao de Variveis
Todas as variveis devem ser declaradas antes de serem utilizadas.
2 programa rea de um rectngulo
#include <iostream> // incluir biblioteca de Input/Output
// prottipo da funo 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; // varivel no declarada return 0; }
long perimetro(const long alt, const long larg) { //parametros entram por valor long res; // declarao de varivel res = alt * 2 + larg *2; return res; // devolver o resultado }
1.4 Variveis Estticas
As variveis estticas so criadas uma nica vez, e inicializada s no momento de criao. Estas, tm um tempo de vida igual ao programa, donde funcionam como variveis globais com visibilidade local.
EXEMPLO: int contador() { static int cont = 0; // varivel esttica cont = cont +1; return cont; } // Esta funo retorna o n de vezes que foi invocada.
Sintaxe da linguagem C/C++
Rui Pais Pg. 3
1.5 Caracteres Especiais
Os caracteres so definidos entre pelicas, como por exemplo:
char c = A;
Barra invertida \ \\ "ola \\ jj" Tabulao (tab) \t "ola \t jj" Retrocesso (backspace) \b "ola \b jj" Mudana de linha \n "ola \n jj" Mover para incio da linha \r "ola \r jj" Apstrofe \ "ola \ jj" Aspas \" "ola \ jj" Caracter ASCII 0 \0 "ola \0 jj"
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 Pg. 4
1.7 Visibilidade de Variveis
As variveis podem ter uma visibilidade global ou local. Podem existir variveis globais e locais com o mesmo nome? Sim.
3 programa Variveis locais e globais
#include <iostream> // incluir biblioteca de Input/Output int i = 0; // varivel global vlido 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 varivel termina no fim bloco { ... } externo em que est declarada. Se no exemplo anterior todas as variveis tiverem o mesmo nome, qual o resultado do programa?
1.8 Converso de Tipos
Converso Implicita:
double x = 7; // converso de int para double int i = 4.5; // converso de double para int // i==4 // perde-se informao char espaco = 32; // conversao de int para char // igual a: char espaco = ;
Sintaxe da linguagem C/C++
Rui Pais Pg. 5
Converso Explicita:
double x = (double) 7; // converso de int para double int i = (int) 4.5; // converso de double para int
1.9 Expresses arritmticas e lgicas
Expresses arritmticas: So construidas custa dos operadores: + * - / % ( )
int i = 5 * 6 + 4 * 7 + 3;
//utilizar parntices para alterar a precedncia dos operadores int j = 5 * 6 + 4 * (7 + 3);
double x = 5 / 7; // divisao inteira // x == 0 double y = 5 / 7.0; // diviso real // y == 0.714286
int x = 55 % 10.0; // resto da diviso s para inteiros
Expresses lgicas: So construidas custa dos operadores:
Operador Descrio == Igualdade != Diferente < Menor <= Menor ou igual > Maior >= Maior ou igual ! Negao do valor lgico || "ou" lgico && "e" lgico
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 Pg. 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
Alterao de fluxo simples:
if (condio) // condio uma Expresses lgicas! { // executar se condio verdadeira aco1; aco2; ... }
Alterao de fluxo composta:
if (condio) // condio uma Expresses lgicas! { aco1; ... } else // se condio false { aco10; ... }
EXEMPLO 2: // ifs 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 vlido { bloco3 } // executa o bloco por omisso break; } Sintaxe da linguagem C/C++
Rui Pais Pg. 8
1.11 Ciclos while, for e do ... while
Os ciclos permitem a repetio de um bloco de comando, tendo em ateno uma condio de paragem.
Ciclo while:
while(condio) // enquanto a condio 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) // condio sempre verdadeira { cout << "X= " << x << endl; x = x +1; if( x >= 10) break; // sair do ciclo }
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) // condio sempre true { cout << "X= " << x << endl; if( x >= 10) break; // sair do ciclo }
EXEMPLO3: // ciclo infinito int x = 5 for( ; ; ) // condio 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(consio); // repetir o bloco enquanto condio // verdadeira
EXEMPLO1: int x = 5; do { cout << "X= " << x << endl; x = x +1; } while(x < 10);
Sintaxe da linguagem C/C++
Rui Pais Pg. 10
EXEMPLO2: // ciclo infinito int x = 5; do { cout << "X= " << x << endl; if( x >= 10) break; // sair do ciclo x = x +1; } while(true); // condio sempre true
Sintaxe da linguagem C/C++
Rui Pais Pg. 11 1.12 Bibliotecas
Bibliotecas so conjunto de funes que encontra-se compiladas em ficheiros com a extenso .a e .lib, nos sistemas operativos Linux e Windows respectivamente. Para utilizar as funes de uma determinada biblioteca, necessrio incluir um ficheiro com o prottipo das funes disponveis por essa biblioteca (ficheiro com extenso .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 Contedo alloc.h Calloc Funes para manipulao de memria assert.h Cassert Funes para auxlio na deteco de erros complex.h Ccomplex Funes para manipulao de nmeros complexos string.h Cstring Funes para manipulao de cadeia de caracteres (strcpy, strcat, substr, ....) ctype.h Cctype Funes para manipulao de cadeia de caracteres (toupper, tolower, ...) errno.h Cerrno Funes para manipulao de nmeros de erros float.h cfloat Contm os limites relacionados a nmeros em virgula flutuante math.h cmath Funes matemticas signal.h csignal Funes para manipulao de sinais stdio.h cstdio Funes para manupulao de entrada e sada. stdlib.h cstdlib Fnes para manipulao de memria, converso entre strings e nmeros, gerao de nmeros aleatrios, etc. time.h ctime Funes para manipulao de tempo e datas
Bibliotecas da linguagem C++:
Biblioteca C++ Contedo iostream Funes para manipulao de entrada e sada (Input/Output) fstream Funes para manipulao de ficheiro entrada e/ou sada vector Funes para manipulao de vectores (sequncia de elementos) string Funes para manipulao de strings (sequncia de caracteres)