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

Post on 17-Apr-2015

106 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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++

PARTE 1

C

Í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

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.

Tipos de Dados

Char

Int ( Integer )

Float ( Real )

Double

Void

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

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

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

Operadores e Atribuição

= comando de atribuição

- Menos

+ Mais

* Multiplicação

/ Divisão

% Resto da Divisão

-- Decremento

++ Incremento

Operadores Relacionais

> Maior

< Menor

>= Maior igual

<= Menor igual

= = Igual

!= Diferente

Operadores Lógicos

&& And

|| Or

! Not

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.

Í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

Comando If

If ( expressão ) comando;

Else comando;

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

else x = 0;

Comando Switch

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

seqüência de comandos}

Exemplo

Switch ( x ){

Case 1: escreve(x);

break;

Case 2: Registra(x);

break;

Default

apaga(x);

}

Comando For

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

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

Comando while

While ( condição ) comando;

ex: while (x<12) {

y += x

y = y*y }

Comando do-while

Do {

comando;

} while ( condição );

Do {

y += x;

} while (x < 12);

Í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

Matrizes Unidimensionais

Matrizes unidimensionais

Tipo NomeVar[tamanho]

Ponteiros para matrizes

Apenas o nome leva ao 1º elemento

var == &var[0]

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

Strings

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

Constantes strings são declarados entre aspas duplas

ex: “Olha eu aqui!”

Matrizes Bidimensionais

tipo NomeVar [tamanho][tamanho]

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

Í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

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”

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

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];

Ponteiros - Continuação

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

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

Í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

Funções

EspTipo Nome ( ListaParâmetros ) {

corpo da função

}

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

Parâmetros Formais

Chamadas por valor

ex: func1(int x)

Chamadas por referência

ex: func1(int *x)

Funções

Programa principal

Arquivo separado

Biblioteca

Í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

Tipos de dados do usuário

Estrutura (Struct)

Campo de bit

União (Union)

Enumeração

typedef

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

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

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

Enumerações

enum Nome {ListaEnumeração} NomeVar

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

Typedef

Typedef tipo nome

Onde nome é o novo nome do tipo

Í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

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);

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

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 %

Í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

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.

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.

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;

Funções

Fopen() – abre arquivo

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

int fclose(FILE *fp);

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.

Funções de caractere

putc() ou fputc()

int putc( int ch, FILE *fp);

getc() ou fgetc()

int getc( FILE *fp);

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)

Funções de string

fputs()

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

fgets()

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

remove() e fflush()

remove() – apaga arquivo

int remove (char *filename);

fflush() – esvazia stream

int fflush (FILE *fp);

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);

fprintf() e fscanf()

fprintf()

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

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

*control_string,...);

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

Í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

Diretivas de pré-processador

#define

#include

#error

#undef

Í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

Comentários

/* ... */

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

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

Í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

Protótipo de função

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

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

PARTE 2

C ++

Í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

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

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

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;

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

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

Í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

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

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;

};

Í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

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

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

Í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

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.

Sobrecarga de operador

Exemplo:

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

{ strcpy(data, str); }

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

titulo + “C++”;

Í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

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;

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.

Í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

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.

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.

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.

Í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

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

Restringindo o acesso de uma amiga

friend ProtótipoDaFunção

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

Bibliografia

Schildt, Herbert

C, Completo e Total; 1990; Editora Makron Books

Jamsa, Kris

Aprendendo C++; 1999; Editora Makron Books

top related