View
106
Download
1
Category
Preview:
Citation preview
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
Recommended