Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
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;
}