c / c++ grupo paralelismo – unesp rc juliana danelute rafael amaro saulo ricardo guerra selma...

92
C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

C / C++

Grupo Paralelismo – Unesp RC

Juliana Danelute

Rafael Amaro

Saulo Ricardo Guerra

Selma Haruyo Shimono

Page 2: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Grupo Paralelismo - Unesp RC

Parte 1 – C

Parte 2 – C++

Page 3: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

PARTE 1

C

Page 4: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

CONCEITOS BÁSICOS rfEstruturas Condicionais rfMatrizes rfPonteiros JULIANA DANELETIFunções sauloTipos de Dados do usuário rf Entrada e Saída juArquivos selmaDiretivas de pré-processadores sauloComentários sauloUnits selma

Page 5: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Visão Geral de C

C é uma linguagem de médio nível.

C é uma linguagem estruturada.

C é uma linguagem compilada.

C pode ser compilada em separada.

Page 6: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Tipos de Dados

Char

Int ( Integer )

Float ( Real )

Double

Void

Page 7: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Identificadores

Os identificadores em C devem começar com uma letra ou _ ( sublinhado )

Os identificadores podem conter letras, números ou _ ( sublinhado)

As primeiras 31 letras são significativas

Page 8: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Variáveis

Forma geral da declaração de uma variável

tipo ListaDeVariáveis

As variáveis podem ser inicializadas na definição

Variáveis globais

Variáveis locais

Page 9: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Especificadores de tipo de classe de armazenamento

Extern - Referenciar variáveis globais em módulos compilados separadamente.

Static - Mantém o valor de uma variável entre chamadas

Register - Acesso mais rápido possível ( usando registradores em vez da memória )

EspDeArmazenamento tipo NomeDaVariável

Page 10: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Operadores e Atribuição

= comando de atribuição

- Menos

+ Mais

* Multiplicação

/ Divisão

% Resto da Divisão

-- Decremento

++ Incremento

Page 11: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Operadores Relacionais

> Maior

< Menor

>= Maior igual

<= Menor igual

= = Igual

!= Diferente

Page 12: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Operadores Lógicos

&& And

|| Or

! Not

Page 13: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Conversão de tipos

Quando duas variáveis de tipos diferentes são misturadas, o compilador converte todos os operandos no tipo do maior operando.

Page 14: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos BásicosConceitos Básicos ESTRUTURAS CONDICIONAISMatrizesPonteirosFunçõesTipos de Dados do usuário Entrada e SaídaArquivosDiretivas de pré-processadoresComentáriosUnits

Page 15: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Comando If

If ( expressão ) comando;

Else comando;

ex: if (x > y) x = y;

else x = 0;

Page 16: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Comando Switch

Switch ( expressão ){ Case Comando1: seqüência de comandos Break ..... Default

seqüência de comandos}

Page 17: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Exemplo

Switch ( x ){

Case 1: escreve(x);

break;

Case 2: Registra(x);

break;

Default

apaga(x);

}

Page 18: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Comando For

For( inicialização; condição; Incremento) comando;

For( i = 0;i < 100; i++) j += i;

Page 19: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Comando while

While ( condição ) comando;

ex: while (x<12) {

y += x

y = y*y }

Page 20: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Comando do-while

Do {

comando;

} while ( condição );

Do {

y += x;

} while (x < 12);

Page 21: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos BásicosConceitos Básicos Estruturas CondicionaisEstruturas Condicionais

MATRIZESPonteirosFunçõesTipos de Dados do usuário Entrada e SaídaArquivosDiretivas de pré-processadoresComentáriosUnits

Page 22: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Matrizes Unidimensionais

Matrizes unidimensionais

Tipo NomeVar[tamanho]

Ponteiros para matrizes

Apenas o nome leva ao 1º elemento

var == &var[0]

Page 23: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Matrizes como parâmetros

Como ponteiro ex: func1(int* x)

Como matriz dimensionada ex: func1(int x[10]

Como matriz adimensional ex: func1(int x[]) Mesmo resultado pois a função recebe apenas um

ponteiro e não cria de fato a matriz

Page 24: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Strings

Matriz de caracteres terminados com o caractere nulo “/0”

Constantes strings são declarados entre aspas duplas

ex: “Olha eu aqui!”

Page 25: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Matrizes Bidimensionais

tipo NomeVar [tamanho][tamanho]

Matrizes multidimensionais tipo NomeVar[tamanho][tamanho]...[tamanho]

Page 26: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos Básicos Conceitos Básicos Estruturas CondicionaisEstruturas CondicionaisMatrizesMatrizes

PONTEIROSFunçõesTipos de Dados do usuário Entrada e SaídaArquivosDiretivas de pré-processadoresComentáriosUnits

Page 27: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Ponteiros

Forma Geral de Declaração:tipo *nome;

Operadores:&: devolve o endereço na memória do

seu operando – “recebe o endereço de”*: devolve o valor da variável

localizada no endereço que o segue – “recebe o valor que está no endereço de”

Page 28: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Ponteiros – Continuação

Operações: Adição Subtração

Não limitado a apenas incremento e decremento. Pode-se somar ou subtrair inteiros de ponteiros.

Comparação:Em expressões relacionais

Page 29: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Ponteiros – Continuação

Ponteiros e Matrizes:

Para acessar elementos de matrizes usa–se aritmética de ponteiros ou indexação de matrizes

Matrizes de Ponteiros:

tipo *nome[num];

Page 30: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Ponteiros - Continuação

Inicialização de Ponteiros: é necessário para evitar erros

Alocação Dinâmica Malloc(): aloca memória Free(): libera memória

Page 31: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos Básicos Conceitos Básicos Estruturas CondicionaisEstruturas CondicionaisMatrizesMatrizesPonteirosPonteiros

FUNÇÕESTipos de Dados do usuário Entrada e SaídaArquivosDiretivas de pré-processadoresComentáriosUnits

Page 32: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Funções

EspTipo Nome ( ListaParâmetros ) {

corpo da função

}

C não aceita funções dentro de funções

Page 33: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Parâmetros Formais

Chamadas por valor

ex: func1(int x)

Chamadas por referência

ex: func1(int *x)

Page 34: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Funções

Programa principal

Arquivo separado

Biblioteca

Page 35: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos Básicos Conceitos Básicos Estruturas Condicionais Estruturas Condicionais MatrizesMatrizesPonteirosPonteirosFunçõesFunções

TIPOS DE DADOS DO USUÁRIO Entrada e SaídaArquivosDiretivas de pré-processadoresComentáriosUnits

Page 36: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Tipos de dados do usuário

Estrutura (Struct)

Campo de bit

União (Union)

Enumeração

typedef

Page 37: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Struct Forma geral

NomeVar { tipo NomeVar

tipo NomeVar} ListaDeVariáveis

Declaração de variáveis Struct NomeStruct NomeVar

Struct podem ser passadas inteiras como argumentosPonteiros para estruturas Struct também podem ser usados

Page 38: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Campos de Bit

Usado para acessar um único bit dentro de um byte Forma Geral

Struct nome { tipo nome1: comprimento; tipo nome2: comprimento;

...} Lista de variáveis

Page 39: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Uniões

Posição de memória que é compartilhada por duas ou mais variáveis em momentos diferentes.Forma Geral

Union nome { tipo NomeDaVariável; ...} ListaVariáveis

Page 40: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Enumerações

enum Nome {ListaEnumeração} NomeVar

É possível atribuir valores a seqüência criada

Page 41: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Typedef

Typedef tipo nome

Onde nome é o novo nome do tipo

Page 42: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos Básicos Conceitos Básicos Estruturas CondicionaisEstruturas CondicionaisMatrizesMatrizesPonteirosPonteirosFunçõesFunçõesTipos de Dados do usuário Tipos de Dados do usuário

ENTRADA E SAÍDAArquivosDiretivas de pré-processadoresComentáriosUnits

Page 43: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

E/S pelo Console

Lendo:

Getch();

ch=getch();

Gets();

gets(str);

Scanf();

scanf(“%t”,&variável);

Escrevendo:

Putchar();

putchar(ch);

Puts();

puts(“alo”);

Printf();

printf(“texto %t texto”, variável);

Page 44: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

E/S pelo Console - Continuação

%c

%d

%i

%e

%E

%f

%g

%G

Caractere

Inteiros decimais com sinal

Inteiros decimais com sinal

Notação Científica

Notação Científica

Ponto flutuante decimal

Usa %e ou %f, o que for mais curto

Usa %E ou %F, o que for mais curto

Page 45: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

E/S pelo Console - Continuação

%o

%s

%u

%x

%X

%p

%n

%%

Octal sem sinal

String de caracteres

Inteiros decimais sem sinal

Hexadecimal sem sinal (letras minúsculas)

Hexadecimal sem sinal (letras maiúsculas)

Apresenta um ponteiro

Escreve o símbolo %

Page 46: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos Básicos Conceitos Básicos Estruturas CondicionaisEstruturas CondicionaisMatrizesMatrizesPonteirosPonteirosFunçõesFunçõesTipos de Dados do usuário Tipos de Dados do usuário Entrada e SaídaEntrada e Saída

ARQUIVOSDiretivas de pré-processadoresComentáriosUnits

Page 47: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

E/S com ArquivosPara se iniciar a utilização das funções de arquivos em C é necessário saber a diferença entre Streams e Arquivo.

Arquivo é um dispositivo real, que pode ser desde de um arquivo em disco até um terminal ou impressora.Streams é um dispositivo lógico criado pelo sistema de arquivos, sendo associada a um arquivo para que possamos trabalhar com diferentes tipos de dispositivos de uma mesma maneira.Existem dois tipos de Streams: texto e binária.

Page 48: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Considerações iniciais

Para se utilizar as funções de E/S com arquivos é necessário que o cabeçalho STDIO.H esteja presente no programa.

O arquivo de cabeçalho STDIO.H fornece protótipos para as funções e define três tipos: size_t, ftpos_t e FILE, onde size_t e ftpos_t são do tipo unsigned e FILE é um ponteiro para arquivo.

A macro EOF definida em STDIO.H indica fim de arquivo e é definida como –1.

Page 49: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Ponteiro de Arquivo

Um ponteiro de arquivo é um ponteiro para informações que definem várias coisas sobre o arquivo como o nome, status e a posição atual. Um ponteiro de arquivo é do tipo FILE.

FILE *fp;

Page 50: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Funções

Fopen() – abre arquivo

FILE *fopen(const *char nomearq, const *char modo);Fclose() – fecha arquivo

int fclose(FILE *fp);

Page 51: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Modos de abertura

r – Abre arquivo texto para leituraw – Cria arquivo texto para escritaa – Anexa a um arquivo textorb – Abre um arquivo binário para leiturawb – Cria um arquivo binário para escritaab – Anexa a um arquivo binárioOBS: Acrescentando + nos modos anteriores o arquivo trabalha tanto com leitura como com escrita.

Page 52: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Funções de caractere

putc() ou fputc()

int putc( int ch, FILE *fp);

getc() ou fgetc()

int getc( FILE *fp);

Page 53: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

feof(), rewind() e ferror()

Testa fim de arquivoint feof (FILE *fp);

Reposiciona indicador de posição no início do arquivo

void rewind (FILE *fp);Determina se operação de arquivo produziu erro

int ferror (FILE *fp)

Page 54: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Funções de string

fputs()

int fputs (const char *str, FILE *fp);

fgets()

char *fgets (char *str, int lenght,FILE *fp);

Page 55: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

remove() e fflush()

remove() – apaga arquivo

int remove (char *filename);

fflush() – esvazia stream

int fflush (FILE *fp);

Page 56: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

fread() e fwrite()

fread()

size_t fread (void *buffer, size_t numbytes, size_t count, FILE *fp);

fwrite()size_t fwrite (void *buffer, size_t

numbytes, size_t count, FILE *fp);

Page 57: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

fprintf() e fscanf()

fprintf()

int fprintf (FILE *fp, const char *control_string,...);

fscanf()int fscanf (FILE *fp, const char

*control_string,...);

Page 58: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

fseek()

fseek()

int fseek (FILE *fp, long numbytes, int origin);

Origin Nome da macroInicío do arquivo SEEK_SET

Posição atual SEEK_CUR

Final do arquivo SEEK_END

Page 59: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos Básicos Conceitos Básicos Estruturas CondicionaisEstruturas CondicionaisMatrizesMatrizesPonteirosPonteirosFunçõesFunçõesTipos de Dados do usuário Tipos de Dados do usuário Entrada e SaídaEntrada e SaídaArquivosArquivos

DIRETIVAS DE PRÉ-PROCESSADORESComentáriosUnits

Page 60: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Diretivas de pré-processador

#define

#include

#error

#undef

Page 61: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos Básicos Conceitos Básicos Estruturas Condicionais Estruturas Condicionais MatrizesMatrizesPonteirosPonteirosFunçõesFunçõesTipos de Dados do usuário Tipos de Dados do usuário Entrada e SaídaEntrada e SaídaArquivosArquivosDiretivas de pré-processadoresDiretivas de pré-processadores

COMENTÁRIOSUnits

Page 62: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Comentários

/* ... */

ex: /* Isto é um comentário! */

Obs: Todos os comentários são ignorados pelo compilador C.

Page 63: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C parte 1

Conceitos Básicos Conceitos Básicos Estruturas Condicionais Estruturas Condicionais MatrizesMatrizesPonteirosPonteirosFunçõesFunçõesTipos de Dados do usuário Tipos de Dados do usuário Entrada e SaídaEntrada e SaídaArquivosArquivosDiretivas de pré-processadoresDiretivas de pré-processadoresComentáriosComentários

UNITS

Page 64: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Protótipo de função

TipoDeRetorno NomeDaFunção (DeclaraçãoDeParâmetros);

Page 65: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Arquivos-cabeçalho

Cabeçalho = header ; arquivos “.h”

Contêm protótipos de funções

Código em outro programa

Compilação conjunta (projeto)

Ex: stdio.h, conio.h

Page 66: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

PARTE 2

C ++

Page 67: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C++ parte 2

CLASSES

Dados Privados e Públicos

Função Construtora e Destrutora

Sobrecarga de Operador

Funções e Dados-membro estáticos

Herança

Classe Amiga

Page 68: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Classes de C++

Ferramenta principal para Programação Orientada a ObjetosSimilar a Struct no sentido de agrupar membros (dados do objeto + funções)Permite definir atributos (características) ao objetoSimplifica programação e amplia reutilização do código

Page 69: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Classes de C++

Objeto, em um sentido mais simples, é um objeto mesmo, uma “coisa”, como por exemplo, um telefone, um arquivoNum sentido de programação, objeto é uma variável do tipo classe

Classe dados n° fone, tipo métodos discar, atender Objeto telefone

Page 70: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Classes de C++ - Estrutura

Class nome_classe {

tipo dado_membro; // Dados do Objeto

void exibe_membro; // Métodos

};

// No programa principal

Nome_classe objeto_um, objeto_dois;

Page 71: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Classes de C++ - Métodos

A medida que os métodos se tornarem maiores, defini-los dentro da classe poderá congestionar a definição de classe

Solução: colocar o protótipo dentro da classe e definir o método fora dela

Page 72: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Classes de C++ - Métodos

Ex: class funcionario {

void exibe_func(void); //Protótipo };

void funcionario::exibe_func(void) {

};

Nome da classe

Nome do método

Page 73: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C++ parte 2

Classes Classes

DADOS PRIVADOS E PÚBLICOS

Função Construtora e Destrutora

Sobrecarga de Operador

Funções e Dados-membro estáticos

Herança

Classe Amiga

Page 74: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Dados Públicos e Privados

Se não colocar o rótulo public, pressupõe-se que todos os membros são privados

Sendo privados, os programas não podem acessar os membros da classe usando o operador ponto

objeto.alguma_variável = valor

Somente as funções (métodos) de membro da classe podem acessar os membros de classe privados

Page 75: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Dados Públicos e Privados

Ex: class funcionario { public:

int atribui_valores(char*, long, float);void exibe_funcinario(void);

private:char nome[64];long func_id;float salario;

};

Page 76: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C++ parte 2

Classes Classes

Dados Privados e PúblicosDados Privados e Públicos

FUNÇÃO CONSTRUTORA E DESTRUTORA

Sobrecarga de Operador

Funções e Dados-membro estáticos

Herança

Classe Amiga

Page 77: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Função Construtora

Métodos que facilitam aos programadores a inicialização dos dados-membro da classe

Tem o mesmo nome da classe, porém, não precede o nome dela com a palavra-chave void

Não retorna tipo

É chamada quando se cria um objeto

Page 78: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Função Destrutora

É chamada para descartar um objeto, liberando a memória que estava sendo usada

Tem o mesmo nome da classe, porém, precedido do caractere til (~)

Não retorna tipo, nem precede o nome dela com a palavra-chave void

Page 79: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C++ parte 2

Classes Classes

Dados Privados e PúblicosDados Privados e Públicos

Função Construtora e DestrutoraFunção Construtora e Destrutora

SOBRECARGA DE OPERADOR

Funções e Dados-membro estáticos

Herança

Classe Amiga

Page 80: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Sobrecarga de operador

Ao sobrecarregar um operador para uma classe, especifica-se uma função que C++ chama toda vez que a classe usa o operador sobrecarregado. O significado do operador muda somente para a classe, não para o programa todo.

Page 81: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Sobrecarga de operador

Exemplo:

void operator +(char *str) //na classe string

{ strcpy(data, str); }

string titulo(“aprendendo ”); //func. constr.

titulo + “C++”;

Page 82: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C++ parte 2

Classes Classes

Dados Privados e PúblicosDados Privados e Públicos

Função Construtora e DestrutoraFunção Construtora e Destrutora

Sobrecarga de OperadorSobrecarga de Operador

FUNÇÕES E DADOS –MEMBRO ESTÁTICOS

Herança

Classe Amiga

Page 83: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Funções e dados-membro estáticos

Para objetos de uma mesma classe compartilharem um ou mais dados-membro:

public ou private:

static tipo membro_compartilhado;

Então, definir o membro como uma variável global, fora da classe:

tipo nome_classe membro_compartilhado;

Page 84: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Funções e dados-membro estáticos

Se a classe define, por exemplo: public: static int conta-pagina; /*definido depois

como variável global*/ static void limpa_tela(void); os membros declarados podem ser usados

pelo programa mesmo que não existam objetos da classe.

Page 85: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C++ parte 2

Classes Classes

Dados Privados e PúblicosDados Privados e Públicos

Função Construtora e DestrutoraFunção Construtora e Destrutora

Sobrecarga de OperadorSobrecarga de Operador

Funções e Dados-membro estáticosFunções e Dados-membro estáticos

HERANÇA

Classe Amiga

Page 86: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Herança

É a capacidade de uma classe derivada

herdar as características de uma classe-base existente.

A classe derivada acessa membros public (todo o programa acessa) e membros protected (só ela acessa) da classe-base.

Page 87: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Herança múltipla

Acontece quando uma classe deriva de mais de uma classe-base.

Exemplo: class computador : public tela_computador,

public placa_mae Na derivação de uma classe por herança múltipla,

a construtora da classe derivada precisa chamar funções construtoras para cada uma das classes-base.

Page 88: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Cadeia de herança

Acontece quando uma classe é derivada de uma classe-base que já foi derivada de uma ou mais outras classes. Exemplo:

Tela_computador

Placa_mae

Computador Estacao_trabalho

Neste caso, a classe estacao_trabalho herda as características das três classes.

Page 89: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Índice C++ parte 2

Classes Classes

Dados Privados e PúblicosDados Privados e Públicos

Função Construtora e DestrutoraFunção Construtora e Destrutora

Sobrecarga de OperadorSobrecarga de Operador

Funções e Dados-membro estáticos Funções e Dados-membro estáticos

HerançaHerança

CLASSE AMIGA

Page 90: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Classe amiga

Permite o acesso aos membros privados entre classes não-relacionadas

A classe cujos membros privados terão o acesso permitido declara uma outra classe como amiga na sua definição através do comando friend

Page 91: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Restringindo o acesso de uma amiga

friend ProtótipoDaFunção

Onde ProtótipoDaFunção define que funções a classe amiga terá acesso.

Page 92: C / C++ Grupo Paralelismo – Unesp RC Juliana Danelute Rafael Amaro Saulo Ricardo Guerra Selma Haruyo Shimono

Bibliografia

Schildt, Herbert

C, Completo e Total; 1990; Editora Makron Books

Jamsa, Kris

Aprendendo C++; 1999; Editora Makron Books