Baixe o app para aproveitar ainda mais
Prévia do material em texto
Referência Rápida de C++ e Portugol (versão preliminar de 25/5/2011) Elaborado por Renato Fabiano Matheus Versão preliminar de 25 de maio de 2011 Versão atualizada disponível em http://www.rfmatheus.com.br/doc/guia- de-referencia-rapida-c++-portugol.pdf Sugestões e correções para: rfmatheus@yahoo.com.br e renatofabiano@pucminas.br. O objetivo da criação deste guia de referência rápida é servir como orientação básica e fonte de referências adicionais para alunos de curso introdutório de programação com os seguintes destaques: 1. mapeamento entre C++ e a pseudo-linguagem Portugol; 2. usa como referência bibliográfica o livro de algoritmos estruturados (FARRER, 1999); 3. Foram feitas adaptações e padronizações nas palavras-chaves do Portugol (nomes de tipos e de operações de entrada e saída, por exemplo) a fim de adequar o pseudo-código à sintaxe do ambiente de simulação e aprendizagem de algoritmos e programação Portugol IDE. Referências 1. Guia Rápido de C++ (trabalho usado como base): UNISINOS http://ncg.unisinos.br/robotica/algoritmos/ref_cpp.doc 2. Portugol: FARRER, Harry et al. Algoritmos e Estruturas de Dados, 3 ed, LTC, 1999. Obs: Para sintaxe do Portugol, veja Apêndice B (FARRER et. al, 1999, p. 276) 3. C/C++ Referência Rápida (GUIA MUITO BOM E MUITO MAIS ABRANGENTE EM RELAÇÃO À LINGUAGEM C++!): http://academic.cankaya.edu.tr/~agorur/courses/ceng241Fall/C++% 20Reference%20Card.pdf 4. BIANCHI, Luiz (professor). Curso Prático de C++. Disponível em: http://bianchi.pro.br/apostilacpp.php. Acessado em: 25/5/2011. 5. SOUTO, Eduardo; GALVÃO, Leandro (professores da Universidade Federal do Amazonas / UFAM). Material da disciplina AED1. Disponível em: http://home.ufam.edu.br/~esouto/material/aed1/. Acesso em: 25/5/2011. 6. Introdução à linguagem C (apostila PDF da Unicamp): ftp://ftp.unicamp.br/pub/apoio/treinamentos/linguagens/c.pdf. 7. Referência rápida de C++ (lista de exemplos): http://pt.wikibooks.org/wiki/Refer%C3%AAncia_r%C3%A1pida_de_ C%2B%2B. 8. Palavras reservadas do C++: http://www.cppreference.com/wiki/keywords/start 9. Referência de bibliotecas da linguagem C++: http://www.cplusplus.com/reference/ 10. Operadores em C e C++ na Wikipedia: http://pt.wikipedia.org/wiki/Operadores_em_C_e_C%2B%2B 11. The C++ Tutorial (em inglês): http://www.learncpp.com/ 12. www.cplusplus.com Tutorial e outros recursos: http://www.cplusplus.com/. 13. Portugol IDE PORTUGOL IDE, ambiente para aprendizado de portugol, interativamente: http://www.dei.estt.ipt.pt/portugol/ ou http://www.dei.estt.ipt.pt/portugol/. Ambiente de Aprendizagem de Algoritmos – Portugol IDE: http://orion.ipt.pt/~manso/papers/2009/Portugol%20Challenges20 09.pdf. Busca de vídeos sobre Portugol IDE. Tutorial de Portugol IDE, por Francisco Souza. 14. G-PORTUGOL SILVA, Tiago. Programando em G-Portugol. Disponível em: http://gpt.berlios.de/manual_nodes/node4.html. Acesso em: 25/5/11 GLOSSÁRIO BÁSICO DE PROGRAMAÇÃO C++ Linguagem (C++ na Wikipedia) orientada a objetos idealizada por Bjarne Stroustrup, como um superconjunto da linguagem C,, desenvolvida originalmente por Dennis Ritchie e popularizada e padronizada com apoio de Brian Kernighan (C na Wikipedia) IDE Integrated Development Environment (Ambiente de desenvolvimento integrado) PORTUGOL Pseudo-linguagem estruturada, com termos na língua portuguesa, utilizada para aprendizado inicial de programação de computadores CONVENÇÕES DESTE GUIA N/A Não se aplica <comando/símbolo> Comando ou símbolo obrigatório [comando/símbolo] Comando ou símbolo opcional Textos escritos com a fonte Courrier New Destaques usados para mostrar implementações na sintaxe da linguagem C++ PALAVRA SUBLINHADA Termos e convenções adotados nos algoritmos em Portugol VARIÁVEL C++ <tipo-de-dado> <Identificador> [ = <valor inicial>]; Ex: int Contador = 0; PORTUGOL DECLARAR <Identificador> <tipo-de-dado> Ex: DECLARAR Contato INTEIRO PORTUGOL IDE <tipo-de-dado> <Identificador> Ex: INTEIRO Contato CONSTANTE const <tipo-de-dado> <nome> = <valor>; Ex:const float PI = 3.1415926; CONSTANTE DO PRÉ-PROCESSADOR #define <Identificador-da-constante> <valor> Ex: #define PI 3.1415926 Obs: 1. Esse tipo de “constante” não tem tipo, pois o pré-processador percorre o código fonte substituindo todas as ocorrências do <Identificador- da-constante> ANTES de iniciar o processo de compilação. 2. Não se utiliza ponto-e-vírgula no final deste tipo de declaração <tipo-de-dado> PORTUGOL (tipos de acordo com sintaxe do Portugol IDE) Tipo C++ Tamanho (bytes) Descrição CARACTER char 1 caractere (entre 0 e 255) TEXTO string Variável Memória disponível INTEIRO short int 2 valor inteiro curto Int 2,4 valor inteiro long int 4 valor inteiro longo REAL float 4 valor real, ponto flutuante double 8 valor real, precisão dupla long double 10 real long - Real precisão dupla LÓGICO (FALSO / VERDADEIRO) bool 1 false / true N/A signed <modificador> Valor possui sinal unsigned <modificador> valor não possui sinal void <modificador> Tipo vazio, usado como valor de retorno de procedimentos static <modificador> Mantém o valor mesmo fora de escopo OPERADORES MATEMÁTICOS E DE ATRIBUIÇÃO PORTUGOL (somente mostrado de for diferente) Símbolo Descrição <- = atribuição (uma variável recebe um valor ou outra variável) + soma - subtração * multiplicação / divisão resto( divisor, dividendo) % resto da divisão (módulo) Numero = Numero + 1 ++ incrementa uma variável (em uma unidade) Numero = Numero - 1 -- decrementa uma variável (em uma unidade) N/A += x = x + y -= x = x - y *= x = x * y /= x = x / y %= x = x % y PRIORIDADE DAS OPERAÇÕES ARITMÉTICAS 1º Potenciação (**), radiciação (sqrt) Em C, C++, pow(x, y) e sqrt (x), respectivamente, sendo que deve-se incluir a biblioteca math.h Potenciação: http://pt.wikipedia.org/wiki/Exponencia%C3%A7%C3%A3o. Raíz: http://www.cplusplus.com/reference/clibrary/cmath/sqrt/. 2º Multiplicação (*), divisão (/) 3º Adição (+), subtração (-) Fonte: FARRER, 1999, p. 278 PRIORIDADE ENTRE OPERADORES 1º Aritmético 2º Relacional 3º NÃO lógico 4º E lógico 5º OU lógico OPERADORES CONDICIONAIS E LÓGICOS PORTUGOL (mostrado se diferente) Símbolo Descrição = == comparação de igualdade (é igual) <> != comparação negada de igualdade (não é igual) > maior que < menor que <= menor ou igual >= maior ou igual E && operador lógico 'E' (AND) OU || operador lógico 'OU' (OR) NÃO ! operador lógico 'NÃO' (NOT) STRINGS (TEXTO) Strings armazenam um texto, chamado cadeia de caracteres. Em C++ utilizaremos a classe String da biblioteca STL ( Standard Template Library), sendo que é necessário incluir o arquivo de cabeçalho <string> no fonte. #include <string> A forma de utilização da string do STL é simples, sem ser necessário a reocupação com os seu tamanho e limites de memória. A maioria dos operadores funcionam como nos valores numéricos (+=, >, < , ==, etc) Ex: string texto1; string texto2; texto1 = "Fulano "; texto2 = "da Silva"; texto1 = texto1 + texto2 ; // texto1 contém "Fulano da Silva" VETORES E MATRIZES C + + VETOR Declaração: <tipo> <nome>[tamanho] Acesso: <nome>[posição] = <valor>; Ex: int meu_vetor[10]; // declara meu_vetor // de 10 posições meu_vetor[2] = 10; // acessa 3º // elemento. O // índice começa em // 0, sendo o último // elemento é o // meu_vetor[9], Ex: Percorrendo todas as posições de um vetor for(int i = 0; i < 10; i++) { vetor[i] = 0; } MATRIZ Declaração: <tipo> <nome>[t1, ... , tN] <tipo> <nome>[num. linhas][num. colunas]; Acesso:<nome>[<linha>][<coluna>] = <valor >; Ex:int matriz[10][3]; // declara // minha_matriz // de 10 por 3 posições matriz[2][1] = 10; // acessa 2º // elemento da 3ª linha Ex: Percorrendo todas as posições de um vetor for(int i = 0; i < 10; i++) { for( int j = 0; j < 3; j++ ) matriz[i][j] = 0; } P O R T U G O L VETOR É UMA MATRIZ DE UMA DIMENSÃO MATRIZ DECLARAR <lista-de-identificadores>[ t1, t2, ..., tN ] <tipo-de-dado> Onde: t1 .. tN, são os limites (tamanho) de cada dimensão da matriz ou vetor (se for apenas de uma dimensão) PROCEDIMENTO Declarando procedimentos void <nome-do-procedimento> ( <lista de parametros> ) { } Ex: void EscreveTexto( string texto ) { cout << texto << “\n”; } Obs: Procedimento é um trecho de código que recebe um nome e pode ser chamado, normalmente varias vezes, a partir de outro comando no programa. Um procedimento não retorna valor. Em C++ é declarado como uma função do tipo "void", que não retorna valor. FUNÇÕES Declarando funções: <tipo de retorno> <nome>( <lista de parametros> ) { } Ex: int soma ( int a, int b ) { return a + b; } Chamando uma função: int x; x = soma(2,2); PASSAGEM DE PARÂMETROS PARA FUNÇÕES E PROCEDIMENTOS Passagem de parâmetro por valor O VALOR da variável utilizada na chamada da função é copiado para a variável declarada na lista de parâmetros. Qualquer alteração feita durante a execução da função ou procedimento no parâmetro NÃO copiado de volta para a variável utilizada na chamada. <tipo de retorno> <nome da função> ( <tipo1> <parâmetro1>, ... ,<tipoN> <parâmetroN> ) Ex: int soma ( int a, int b ) { return a + b; } Passagem de parâmetro por referência A variável declarada na lista de parâmetros passa a ser uma referência – também denominada APELIDO (alias) - para a mesma área de memória da variável utilizada na chamada da função ou procedimento. Desta forma, modificando-se o valor da variável parâmetro durante a execução do procedimento modifica-se também o valor a variável utilizada na chamada da função. Para se fazer a passagem de parâmetro por referência, o símbolo '&' é adicionado após o nome do <tipo> na declaração do procedimento ou função, a fim de indicar para o compilador que trata-se de um parâmetro por referência. <tipo de retorno> <nome da função> ( <tipo1>& <parâmetro1>, ... ,<tipoN>& <parâmetroN> ) Ex: void soma ( int& a, int& b ) { a = a + b; } PASSAGEM DE PARÂMETROS COM VALORES PADRÃO C++ permite que as variáveis declaradas nos parâmetros de uma funções possuam um valor padrão, facilitando a chamada de função. Esses parâmetros devem ser colocados no final da lista, de traz para frente. Ex: float divide ( float a, float b = 2.0) { return a / b; } Chamada da função ou procedimento Para chamar a função temos duas alternativas, com ou sem os valores padrão. Se um parâmetro que tem um valor padrão for omitido, ele assume seu valor padrão declarado no procedimento ou função. Ex: float x; x = divide(2); x = divide(2,3); ENTRADA DE DADOS Para a utilização dos operadores de entrada e saída de dados é necessário adicionar o arquivo de cabeçalho <iostream> no código fonte #include <iostream> cin >> <variável1> >> ... >> <variávelN>; Lê um ou mais valores do teclado e armazena em variáveis. No caso de uma aplicação de console (linha de comando), um valor é lido após um <ENTER>, um <ESPAÇO> ou um <TAB>. “cin” utiliza o operador de extração ">>". Ex: int opcao; cin >> opcao; SAÍDA DE DADOS Em C++, utiliza-se “cout” para escrever na tela valores ou variáveis. “cout” utiliza o operador de inserção "<<". cout << <variavel1> << ... << <variávelN>; Ex: int var = 10; cout << "Fulano da Silva"; cout << var; FORMATANDO A SAÍDA DE DADOS Para formatar a siada de cout se utiliza os manipulador definidos no arquivo de cabeçalho <iomanip>. #define <iomanip> Os principais manipuladores são: dec os numeros são exibidos em decimal oct os numeros são exibidos em octal hex os numeros sao exibidos e hexadecimal fixed representação fixa scientific representação científica setprecision(n) determina que o numero possuirá n digitos de precisão endl indica linha nova left alinha a esquerda right alinha a direita Ex: float val = 10.2345; cout << fixed << setprecision(2) << val; // val será mostrado na tela como "10.23" ESTRUTURAS DE DADOS: REGISTROS PORTUGOL C++ struct <novo tipo> { <tipo1> <nome1>; ... <tipoN> <nomeN>; }; Ex: struct Registro { string nome; string cargo; float salario; }; Registro var; var.nome = "Fulano da Silva"; var.cargo = "Programador"; var.salario = 20000.00; Obs: Uma estrutura permite agrupar vários tipos de variáveis, em um novo tipo de dado. ESTRUTURAS DE REPETIÇÃO: comando FOR Ambiente Sintaxe Exemplo P o r t u g o l C + + for( <inicialização>; <expressão condicional>; <incremento> ) { <comandos> } Obs: usado se o número de repetições é conhecido de antemão for ( i = 0; i < 10; i++ ) { cout << "valor de i = " << i << endl; } ESTRUTURAS DE REPETIÇÃO: comando FAÇA-ENQUANTO Ambiente Sintaxe Exemplo P o r t u g o l C + + Comando do while Obs: o número de repetições não é conhecido, teste no final; os comandos são executados pelo menos uma vez do { <comandos> } while ( < expressão condicional > ); do { cout << "Repitindo enquanto var é igual a 1"<< endl; }while( var == 1); ESTRUTURAS DE REPETIÇÃO: comando ENQUANTO Ambiente Sintaxe Exemplo P o r t u g o l C + + while(<expressão condicional>) { <comandos> } Obs: o número de repetições não é conhecido a priori. while( var != 1 ) { cout << "Repitindo enquanto var for diferente de 1"<< endl; } ESTRUTURAS CONDICIONAIS: COMANDO SE / IF Ambiente Sintaxe Exemplo P o r t u g o l SE( <condição> ) ENTÃO | <comandos> SENÃO | <comandos> FIM SE SE( VALOR > 10 ) ENTÃO | ESCREVER “Maior que 10” SENÃO | ESCREVER "Menor ou igual a 10" FIM SE C + + if(<expressão condicional>) { <comandos> } else { <comandos> } if( valor > 10 ) { cout << "Maior que 10"; } else { cout << "Menor ou igual a 10"; } ESTRUTURAS CONDICIONAIS: comando switch Ambiente Sintaxe Exemplo P o r t u g o l SE( <condição> ) ENTÃO | <comandos> SENÃO SE | <comandos> SENÃO SE | <comandos> SENÃO | <comandos> FIM SE SE( OPCAO = 1 ) ENTÃO | ESCREVER “primeira opcao” SENÃO SE( OPCAO = 2 ) | ESCREVER "segunda opcao" SENÃO | ESCREVER "opcao invalida" FIM SE C + + switch( <Identificador-variavel> ) { case <valor1>: <comandos> break; ... case <valorN>: <comandos> break; [default: <comandos> break;] } Obs: a condição "default:" é executada quando nenhuma das outras é válida switch(opcao) { case 1: cout << "primeira opcao"; break; case 2: cout << "segunda opcao"; break; default: cout << "opcao invalida"; break; }
Compartilhar