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)