Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo Caractersticas bsicas Decises condicionais Laos Vetores e matrizes Apontadores (ponteiros) Funes Estruturas Entrada e sada Aplicaes
2
Introduo
C++
uma linguagem de aplicao geral. Contm a linguagem C (padro ANSI). Suporta abstrao de dados. Suporta programao orientada a objetos. Suporta programao genrica (templates).
3
Introduo
Arquivos fonte
Introduo
Independncia de plataformas
98/NT/2000/Me/XP Solaris/IRIX/AIX/Linux
Unix
Dev-C++
Mensagens
Biblioteca padro
Precisa incluir (#include) a biblioteca antes de usar. sqrt, exp, log, sin, cos, tan, asin, acos, ... Leitura e impresso. Manipulao de arquivos (texto/binrios). Medio e manipulao de datas e tempo. Manipulao de palavras, textos, etc.
Matemtica (math.h/cmath)
Entrada/Sada (stdio.h/iostream)
Tempo (time.h/ctime)
Estruturas de dados: vetores, listas, rvores, ... Algoritmos: ordenao, procura, ...
Exemplo
// programa1.cpp #include <iostream> using namespace std;
E/S bsica
A classe iostream contm os procedimentos de entrada e sada de dados. cout o dispositivo de sada padro. << (operador de insero) utilizado para inserir dados. cin o dispositivo de entrada padro. >> (operador de extrao) utilizado para extrair dados. Dispositivos padro:
Identificadores
Nomes usados para fazer referncia a variveis, funes, tipos definidos pelo usurio, etc. Caractersticas:
O primeiro caractere deve ser letra ou underscore os demais podem ser nmeros. Maisculas e minsculas so consideradas diferentes. No permitido o uso de espaos ou outros caracteres especiais.
Sugestes:
Usar nomes com significado. Variveis locais nomes curtos. Variveis globais nomes mais longos. Evitar comear com underscore uso do compilador. No usar palavras reservadas da linguagem.
11
Variveis
12
Variveis
Declarao:
Exemplos:
Operadores
Aritmticos Relacionais Lgicos Atribuio: =, +=, -= Incremento: ++ Decremento: -Tamanho: sizeof(tipo) Bit-a-bit Outros
14
Operadores
Aritmticos
Operao
Soma Subtrao Multiplicao Diviso Mdulo (resto)
Lgicos
Operao
E OU NO
Operador
+ * / %
Operador
&& || |
Operadores
Relacionais retornam true (1) or false (0).
Operador
== != < > <= >=
Descrio
Igualdade Desigualdade Menor que Maior que Menor ou igual Maior ou igual
16
Decises condicionais
if/else
O comando if ser executado somente se a expresso for verdadeira (1).
17
Decises condicionais
if/else
Exemplo:
#include <iostream> using namespace std; int main(void) { int n; cin >> n;
if (n > 0) // Executado apenas se n positivo. cout << n positivo.\n"; else // Executado se n negativo ou nulo. cout << n negativo ou nulo.\n"; return(0); }
18
Decises condicionais
switch
int ou char
switch (varivel condicional) { Constante case expresso lgica_1: Lista de comandos_1 break; case expresso lgica_2: Lista de comandos_2 break; Sada imediata default: lista de comandos }
O comando switch testa apenas a igualdade. A lista de comandos ser executada se a expresso lgica for igual a varivel condicional. O comando default ser executado se nenhuma das igualdades forem vlidas.
19
Decises condicionais
#include <iostream> using namespace std; int main(void) { cout << "Transformacao de temperaturas.\n"; cout << "1 - Celsius para Fahrenheit\n"; cout << "2 - Fahrenheit para Celsius\n\n"; cout << "Escolha uma opcao: "; int opcao; cin >> opcao; double temp; switch (opcao) { case 1: cout << "Digite a temperatura em Celsius: "; cin >> temp; cout << temp << " C corresponde a " << 1.8*temp + 32.0 << F.\n"; break; case 2: cout << "Digite a temperatura em Fahrenheit: "; cin >> temp; cout << temp << " F corresponde a " << (temp - 32.0)/1.8 << " C .\n"; break; default: cout << "Opcao invalida!!!\n"; break; } return(0); }
20
Comandos de Repetio
while: teste no incio do/while: teste no fim for: while com incremento
Interrupo:
break: sai do lao, mas continua na funo. return: sai do lao e da funo.
21
Comandos de Repetio
Comando while:
while (condio) { <bloco de comandos>; }
O bloco de comandos executado enquanto a condio for verdadeira. A lao s executado na primeira vez se a condio for verdadeira.
22
Comandos de Repetio
for
Sintaxe:
for (inicializao; condio; incremento) { bloco de comandos; }
Inicializao: usada para inicializar a(s) varivel(is). Condio: expresso determinar o trmino do lao. Incremento : define a atualizao das variveis do lao.
23
Comandos de Repetio
Comando do while:
do { <bloco de comandos>; } while (condio)
O bloco de comandos executado enquanto a condio for verdadeira. A lao executado pelo menos uma vez, independe da condio ser verdadeira.
24
Arrays
O que um array?
um conjunto de variveis do mesmo tipo, acessveis com um nico nome e armazenadas de forma contnua na memria.
um identificador que obedece as mesmas regras de formao de identificadores de variveis simples. A individualizao dos elementos deste conjunto de variveis feita atravs da associao de ndices.
25
Nome de um array:
Vetores e matrizes
Exemplo de matriz
26
Vetores e matrizes
Utilizao:
Manter um grupo de valores de mesmo tipo em memria Reduzir a quantidade de variveis. Exemplo: armazenamento de um ponto:
ndice:
Define a posio da varivel dentro do vetor. sempre um inteiro (int, short, long). O primeiro elemento fica na posio 0 (zero). Assim, se tomarmos dim" como sendo o tamanho do vetor, a ltima posio a de ndice dim-1
27
Vetores e matrizes
Supondo que as notas de 10 alunos estejam armazenadas em um vetor identificado por notas, a representao seria a seguinte:
Tipo homogneo
Notas ndice 0 1 2 3 4 5 6 7 8 9
Vetores e matrizes
Declarao:
Vetores e matrizes
Cadeias de caracteres:
Vetores de caracteres:
char texto[100]; char palavra[] = Testando...;
Caractere especial de terminao \0 Maneira mais simples de representar e manipular strings em C++. Biblioteca string.h (ANSI C). Uso superado pela classe string.
30
Vetores e matrizes
Matrizes:
Array bidimensional (dois ndices). Corresponde ao conceito matemtico de matriz, com linhas e colunas. O primeiro ndice indica a linha e o segundo a coluna.
31
Vetores e matrizes
Matrizes
Supondo que 2 materiais e 3 caractersticas de cada um deles estejam armazenadas em uma matriz bidimensional, a representao seria a seguinte:
Caractersticas
Material 1
Material 2 0 1 2
0
1
Neste caso, para referenciar ao material 1 e sua caracterstica 3 devemos usar nomeMatriz[0][2]. 32
Vetores e matrizes
Arrays multidimensionais:
Declarao
tipo identificador[tamanho1][tamanho2][tamanhon];
// Declarao de uma matriz de inteiros com 3 dimenses int matInt[10][50][30] ; // Declarao de uma matriz de floats com 4 dimenses float matFloat[100][100][20][6] ;
33
Matrizes
#include <iostream> using namespace std; int main(void) { int A[2][3]={2,3,4,5,2,0}; int B[2][3]={0,23,2,4,0,6}; int C[2][3]; // Soma as matrizes.
for (int i = 0; i < 2; i++) for (int j = 0; j < 3; j++) C[i][j] = A[i][j] + B[i][j];
// Imprime o resultado. for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) cout << C[i][j] << " cout << "\n"; } return(0); } 34
";
Apontadores (ponteiros)
int *p; // p um ponteiro para inteiro double *x; // x um ponteiro para double & retorna o endereo de uma varivel. * retorna o contedo de um endereo de memria.
35
Operadores associados:
Apontadores (ponteiros)
#include <iostream> using namespace std; int main(void) { int a = 10; // cria uma varivel inteira a int *p; // cria um ponteiro para inteiro cout << "Valor inicial de a: " << a << "\n"; p = &a; *p = 8; // faz apontar para a // altera o contudo do endereo apontado por p
cout << "Valor do ponteiro p: " << p << "\n"; cout << "Conteudo do endereco apontado por p: " << *p << "\n"; cout << "Valor final de a: " << a << "\n"; return(0);
}
Valor inicial de a: 10 Valor do ponteiro p: 0x22ff74 Conteudo do endereco apontado por p: 8 Valor final de a: 8
36
Apontadores (ponteiros)
Operaes aritmticas:
Igualdade
Incremento e decremento
Usandos para percorrer arrays. p++; // p = p + sizeof(tipo_de_p) p--; // p = p - sizeof(tipo_de_p) Na prtica p++ faz p apontar para o prximo elemento do array.
37
Apontadores (ponteiros)
Utilizada quando as dimenses de um array so conhecidas apenas durante a execuo. Criao de estruturas de dados mais complexas:
Alocao dinmica
Operadores:
Exemplo:
int n; cin >> n; double *x = new double[n]; // Aloca um vetor com n posies for (int i = 0; i < n; i++) x[i] = 0.0; // Inicializa o vetor alocado delete []x; // Libera a memoria alocada
Cuidado com alocao dentro de laos e de funes. Evitar memory leaks (memria perdida). Ao final da execuo a memria alocada pelo programa liberada pelo sistema.
39
Alocao dinmica
Matrizes:
So tratadas como um vetor de ponteiros para vetores. As linhas correspondem a um vetor de ponteiros que apontam para o primeiro elemento de cada coluna. Cada coluna um vetor independente. Exemplo:
int n,m; cin >> n >> m; double **A = new double*[n]; for (int i = 0; i < n; i++) A[i] = new double[m]; for (int i = 0; i < n; i++) delete []A[i]; delete []A;
// Aloca as n linhas da matriz A // Aloca as m colunas de cada linha // Libera as m colunas de cada linha // Libera as n linhas da matriz A
40
Funes
Permite que um procedimento utilizado em vrias partes diferentes do cdigo seja programada uma nica vez. Permite dividir um tarefa complexa em uma srie de tarefas mais simples. Cada funo deve executar uma (ou algumas) tarefa(s) especfica(s). Uma funo pode chamar outras funes e a si mesmo (recursividade). Cada funo pode ser testada isoladamente antes de ser utilizada. Criao de bibliotecas de funes.
41
Observaes:
Funes
Filosofia caixa-preta:
Dados
Funo
Resultados
Para utilizar uma funo no preciso saber como ela executa a tarefa desejada.
42
Funes
Estratgias de programao:
Top-down:
Parte do conceito geral do sistema e vai detalhando suas partes at chegar nas funes mais simples. A programao s deve comear aps um certo nvel de detalhamento ser atingido. Estratgia dominante antes do aparecimento da POO.
Botton-up:
Parte da especificao dos elementos mais simples e obtm o sistema final pelo agrupamento destes elementos. nfase na definio de funes genricas e testadas independentemente das demais. Favorece a reutilizao de cdigo.
43
Funes
Sintaxe:
Tipo NomeFuno(tipo1 arg1, ... , tipon angn) { ... // Corpo da funo. } Tipo o tipo de retorna da funo (int, double, ...). Comando return utilizado para retornar o resultado. Tipo1 indica o tipo do argumento 1 (arg1).
Exemplo:
int Max(int a, int b) { if (a > b) return(a); return(b); } int i = 2, j = 4; cout << Max(i, j); // Definicao da funcao Max para dois nmeros
44
Funes
Sobrecarga de funes:
C++ permite que diferentes funes tenham o mesmo nome. Desde que o nmero de argumentos ou seus tipos sejam diferentes.
Exemplo:
int Max(int a, int b, int c) // Definicao da funcao Max para 3 nmeros { return(Max(Max(a, b), c)); // Retorna Max(d, c), onde d = Max(a,b) } int i = 2, j = 4, k = 3; cout << Max(i, j, k);
45
Estruturas
Estruturas:
So utilizadas para armazenar dados heterogneos (tipos diferentes). Ex: dados de um aluno
Nome (string) Matrcula (inteiro) Data de nascimento (dd/mm/aaaa => 3 inteiros) Curso (inteiro ou string) IRA (real). Armazenam um conjunto de dados do mesmo tipo (dados homogneos). 46
Vetores e matrizes:
Estruturas
Definio:
struct DadosAluno{ char Nome[200]; int Matricula; int DiaNasc; int MesNasc; int AnoNasc; int Curso; // Codigo do curso double IRA // Indice de rendimento academico };
Declarao de variveis:
Estruturas
Atravs do nome da varivel e do nome do campo. Exemplos: cout << aluno.Matricula; cout << vet_aluno[i].Matricula; cout << ptr_aluno->Matricula; Importante: Utiliza-se . nas variveis comuns. Utiliza-se -> nas variveis tipo ponteiro. Vetores alocados dinamicamente so tratados como variveis comuns aps a alocao.
48
Estruturas
Verifica-se que as estruturas podem ser encaradas como novos tipos definidos pelo programa. Alm dos dados contidos na estrutura possvel definir funes que atuem sobre estes dados.
Mecanismos de definio: Estruturas (struct). Enumerados (enum). Unies (union): pouco utilizado. Enumerados: Utilizados para definir os valores possveis de uma varivel (inteira):
enum _eResultado{VITORIA, EMPATE, DERROTA}; enum _eResultado jogo; if (jogo == VITORIA) cout << Ganhamos!;
50
Comando typedef:
Define um nome para o tipo criado. Pode ser utilizado para renomear tipos existentes:
typedef float Real; // usar double se necessario! Real x[100];
51